pythonでutf-8ファイルをASCIIファイルに変換するスクリプトを記述しようとしています。
#!/usr/bin/env python
# *-* coding: iso-8859-1 *-*
import sys
import os
filePath = "test.lrc"
fichier = open(filePath, "rb")
contentOfFile = fichier.read()
fichier.close()
fichierTemp = open("tempASCII", "w")
fichierTemp.write(contentOfFile.encode("ASCII", 'ignore'))
fichierTemp.close()
このスクリプトを実行すると、次のエラーが発生します。
UnicodeDecodeError: 'ascii'コーデックは位置13のバイト0xefをデコードできません:順序が範囲外(128)
Encodeメソッドのignoreパラメーターでエラーを無視できると思いました。しかし、そうではないようです。
私は他の変換方法を受け入れています。
data="UTF-8 DATA"
udata=data.decode("utf-8")
asciidata=udata.encode("ascii","ignore")
UTF-8はASCIIのスーパーセットです。 UTF-8ファイルはASCIIであるか、損失なしに変換できません。
import codecs
...
fichier = codecs.open(filePath, "r", encoding="utf-8")
...
fichierTemp = codecs.open("tempASCII", "w", encoding="ascii", errors="ignore")
fichierTemp.write(contentOfFile)
...