Eu tenho um navegador que envia caracteres utf-8 para o meu servidor Python, mas quando eu o recupero da string de consulta, a codificação que o Python retorna é ASCII. Como posso converter a string simples para utf-8?
OBSERVAÇÃO: A string transmitida da Web já está codificada em UTF-8, só quero fazer com que o Python trate como UTF-8 e não ASCII.
python
python-2.7
unicode
utf-8
Bin Chen
fonte
fonte
"some_string".encode('utf-8').decode('utf-8')
Respostas:
^ Essa é a diferença entre uma sequência de bytes (string_ simples) e uma sequência unicode.
^ Convertendo para unicode e especificando a codificação.
fonte
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 2: invalid start byte
Este é o meu código: ret = [] para linha em csvReader: cline = [] para elm em linha: unicodestr = unicode (elm, 'utf-8') cline.append (unicodestr) ret .append (cline)unicode()
não existem.u
volta para umstr
formato (converter deu
volta paras
)?Se os métodos acima não funcionarem, você também pode dizer ao Python para ignorar partes de uma string que não pode ser convertida em utf-8:
fonte
Pode ser um pouco exagerado, mas quando trabalho com ascii e unicode nos mesmos arquivos, a decodificação repetida pode ser uma dor, é isso que eu uso:
fonte
Adicionando a seguinte linha ao topo do seu arquivo .py:
permite codificar seqüências de caracteres diretamente em seu script, assim:
fonte
from __future__ import unicode_literals
na parte superior ou use ou''
prefixo. Não use caracteres não-ascii embytes
literais. Para obter utf-8 bytes, você poderáutf8bytes = unicode_text.encode('utf-8')
posteriormente, se necessário.from __future__ import unicode_literals
me ajudar a converter uma string com caracteres não-ascii para utf-8?Se bem entendi, você tem uma string de bytes codificada utf-8 em seu código.
A conversão de uma sequência de bytes em uma sequência unicode é conhecida como decodificação (unicode -> byte-string é codificação).
Você faz isso usando a função unicode ou o método decode . Ou:
Ou:
fonte
fonte
No Python 3.6, eles não têm um método unicode () interno. As strings já estão armazenadas como unicode por padrão e nenhuma conversão é necessária. Exemplo:
fonte
Traduza com ord () e unichar (). Todo caractere unicode tem um número associado, algo como um índice. Portanto, o Python tem alguns métodos para traduzir entre um caractere e seu número. A desvantagem é um exemplo. Espero que possa ajudar.
fonte
Sim, você pode adicionar
na primeira linha do seu código-fonte.
Você pode ler mais detalhes aqui https://www.python.org/dev/peps/pep-0263/
fonte