Como verificar o python se uma string contém caracteres apenas formando a página de código específica?

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

  •  25-08-2022
  •  | 
  •  

Pergunta

Eu sei que o Python usa apenas o UTF8 para codificação de strings, mas e se eu precisar enviar dados para um aplicativo mais antigo que não é unicode e suporta apenas esses caracteres incluídos no código do Windows como Windows-1251 (Cyrylic) etc. . Então, aqui eu quero detectar se a string UTF-8 contém qualquer caractere que não possa ser representado pela determinada página de código.

Foi útil?

Solução

Há Lib para codificar a detecção: https://pypi.python.org/pypi/chardet (Detecção automática de codificação de caracteres em Python. Tão inteligente quanto seu navegador. Código aberto)

Detecta ...

  • ASCII, UTF-8, UTF-16 (2 variantes), UTF-32 (4 variantes)
  • BIG5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (chinês tradicional e 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 (grego)
  • ISO-8859-8, Windows-1255 (hebraico visual e lógico)
  • TIS-620 (tailandês)

Exemplo de Docs:

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

Outras dicas

Onde blah é sua corda e ascii é sua codificação:

blah = u'\uffff'
try:
    blah.encode('ascii')
except UnicodeEncodeError:
    # nope - can't do it...
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top