BOM (marque d'ordre d'octet) doit mourir. Il n'y a pas de pitié.
Voici [Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E3%82%AA%E3%83%BC%E3 % 83% 80% E3% 83% BC% E3% 83% 9E% E3% 83% BC% E3% 82% AF).
Si vous utilisez csv.DictReader ou quelque chose du genre, BOM sera ajouté au début de l'en-tête, donc si vous pensez que vous allez l'importer avec seq sur la première ligne, vous vous retrouverez avec un en-tête comme <0xEF> seq
.
$ nkf --overwrite -oc=UTF-8 filename
Je pense que c'est la voie royale. Il n'y a rien de mal à l'effacer avant de le lire.
Parce qu'il n'est pas toujours possible de l'effacer avant l'importation.
import codecs
def strip_bom(s):
s = s.encode('utf8')
if s.startswith(codecs.BOM_UTF8):
return s[len(codecs.BOM_UTF8):].decode('utf8')
return s.decode('utf8')
Le module codecs
a une constante appelée BOM_UTF8
, mais pourquoi est-ce que je ne peux pas la supprimer avec l'option ʻopen`?
Recommended Posts