web-dev-qa-db-ja.com

Python UTF-8からASCIIに変換するスクリプト

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パラメーターでエラーを無視できると思いました。しかし、そうではないようです。

私は他の変換方法を受け入れています。

30
Nicolas
data="UTF-8 DATA"
udata=data.decode("utf-8")
asciidata=udata.encode("ascii","ignore")
51
Utku Zihnioglu

UTF-8はASCIIのスーパーセットです。 UTF-8ファイルはASCIIであるか、損失なしに変換できません。

8
Tobu
import codecs

 ...

fichier = codecs.open(filePath, "r", encoding="utf-8")

 ...

fichierTemp = codecs.open("tempASCII", "w", encoding="ascii", errors="ignore")
fichierTemp.write(contentOfFile)

 ...