Encoder lors de la lecture avec UTF-8 BOM en Python
Spécifiez ** 'utf_8_sig' **.
Exemple de lecture d'un fichier
io.opne(filename, "r", encoding="utf_8_sig")
Convertir du type str (UTF-8) au type unicode
uni_string = unicode(str_string, 'utf_8_sig')
J'étais un peu accro à la lecture de UTF-8 en Python, je vais donc l'écrire pour éviter de l'oublier.
UTF-8 peut avoir une nomenclature (marque d'ordre d'octet). Il s'agit d'un identifiant que le codage est UTF-8. Les 3 premiers octets du fichier sont «EF BB BF».
Le problème est qu'il existe UTF-8 avec BOM et UTF-8 sans BOM.
La nomenclature est ajoutée à UTF-8 dans Windows'Notepad 'et Excel. Linux et Mac semblent essentiellement gérer UTF-8 sans BOM.
Cette fois, je voulais charger le csv édité dans Excel, j'ai donc dû considérer BOM.
J'ai pensé, je l'ai écrit dans le document.
Document officiel UTF-8 avec marque BOM
Si vous définissez le code d'encodage sur "utf_8_sig", S'il existe une nomenclature, elle sera ignorée et lue. S'il n'y a pas de nomenclature, il peut être lu comme UTF-8 tel quel.
ImportCSV.py
import io
with io.open('sample.csv', 'rt', encoding='utf_8_sig') as f:
print(f.readlines())
Les codes de caractères ont tendance à créer une dépendance en Python, mais si vous pouvez gérer correctement les codes de caractères lors de la conversion en type unicode, vous n'aurez pas à vous soucier des codes de caractères.
Recommended Posts