¿Cómo verificar en Python si una cadena contiene la página de código específico de los caracteres?

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

  •  25-08-2022
  •  | 
  •  

Pregunta

Sé que Python usa únicamente UTF8 para la codificación de cadenas, pero ¿qué pasa si necesito enviar datos a una aplicación más antigua que no sean Unicode y que admita solo estos caracteres que se incluyen en Windows Code-Page como Windows-1251 (Cyrylic), etc. . Así que aquí quiero detectar si la cadena UTF-8 contiene algún carácter que no pueda representado por la página de código dado.

¿Fue útil?

Solución

Hay libor para la detección de codificación: https://pypi.python.org/pypi/chardet (Carácter que codifica la detección automática en Python. Tan inteligente como su navegador. Fuente abierta)

Detecta ...

  • ASCII, UTF-8, UTF-16 (2 variantes), UTF-32 (4 variantes)
  • Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (chino tradicional y simplificado)
  • EUC-JP, SHIFT_JIS, ISO-2022-JP (japonés)
  • EUC-KR, ISO-2022-KR (coreano)
  • KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, Windows-1251 (cirílico)
  • ISO-8859-2, Windows-1250 (húngaro)
  • ISO-8859-5, Windows-1251 (búlgaro)
  • Windows-1252 (inglés)
  • ISO-8859-7, Windows-1253 (griego)
  • ISO-8859-8, Windows-1255 (hebreo visual y lógico)
  • TIS-620 (tailandés)

Ejemplo de Docs:

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

Otros consejos

Dónde blah es tu cadena y ascii es tu codificación:

blah = u'\uffff'
try:
    blah.encode('ascii')
except UnicodeEncodeError:
    # nope - can't do it...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top