Wie checkte ich in Python, wenn eine Zeichenfolge nur Zeichen für Zeichen spezifischer Code enthält?

StackOverflow https://stackoverflow.com/questions/20353716

  •  25-08-2022
  •  | 
  •  

Frage

Ich weiß, dass Python nur UTF8 für die String-Codierung verwendet, aber was ist, wenn ich Daten an eine ältere Anwendung senden muss, die nicht nicht nicht gezwungen ist und nur diese Zeichen unterstützt, die wie Windows-1251 (Cyryl) usw. in der Windows-Code-Seite enthalten sind. Also möchte ich hier erkennen, ob die UTF-8-Zeichenfolge ein Zeichen enthält, das nicht durch gegebene Code-Seite dargestellt wird.

War es hilfreich?

Lösung

Es gibt Lib für die Kodierungserkennung: https://pypi.python.org/pypi/chardet (Charakter-Codierung automatischer Anerkennung in Python. So klug wie dein Browser. Open Source)

Erkennt ...

  • ASCII, UTF-8, UTF-16 (2 Varianten), UTF-32 (4 Varianten)
  • BIG5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (traditionelles und vereinfachtes Chinesisch)
  • EUC-JP, Shift_jis, ISO-2022-JP (Japanisch)
  • EUC-KR, ISO-2022-KR (Koreanisch)
  • KOI8-R, Maccyrillic, IBM855, IBM866, ISO-8859-5, Windows-1251 (Cyrillic)
  • ISO-8859-2, Windows-1250 (Ungar)
  • ISO-8859-5, Windows-1251 (Bulgarisch)
  • Windows-1252 (Englisch)
  • ISO-8859-7, Windows-1253 (Griechisch)
  • ISO-8859-8, Windows-1255 (visuelles und logisches Hebräer)
  • TIS-620 (Thai)

Beispiel aus Dokumenten:

>>> import urllib
>>> rawdata = urllib.urlopen('http://yahoo.co.jp/').read()
>>> import chardet
>>> chardet.detect(rawdata)
{'encoding': 'EUC-JP', 'confidence': 0.99}

Andere Tipps

Wo blah ist deine Zeichenfolge und ascii Ist Ihre Codierung:

blah = u'\uffff'
try:
    blah.encode('ascii')
except UnicodeEncodeError:
    # nope - can't do it...
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top