Stückliste (Byte Order Mark) sollte sterben. Es gibt keine Gnade.
Hier ist [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).
Wenn Sie csv.DictReader oder etwas anderes verwenden, wird die Stückliste am Anfang des Headers hinzugefügt. Wenn Sie also glauben, dass Sie sie mit seq in der ersten Zeile importieren, erhalten Sie einen Header wie <0xEF> seq
.
$ nkf --overwrite -oc=UTF-8 filename
Ich denke, das ist die königliche Straße. Es ist nichts Falsches daran, es vor dem Lesen zu löschen.
Weil es nicht immer möglich ist, es vor dem Import zu löschen.
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')
Das "Codecs" -Modul hat eine Konstante namens "BOM_UTF8", aber warum kann ich sie nicht mit der Option "Öffnen" löschen?
Recommended Posts