utf8 - Cómo convertir una cadena a utf-8 en Python
python string to unicode (8)
Agregando la siguiente línea a la parte superior de su archivo .py:
# -*- coding: utf-8 -*-
le permite codificar cadenas directamente en su secuencia de comandos, como esta:
utfstr = "ボールト"
Tengo un navegador que envía caracteres utf-8 a mi servidor Python, pero cuando lo recupero de la cadena de consulta, la codificación que devuelve Python es ASCII. ¿Cómo puedo convertir la cadena simple a utf-8?
NOTA: La cadena que pasó desde la web ya está codificada en UTF-8, solo quiero hacer que Python lo trate como UTF-8 no como ASCII.
En Python 3.6, no tienen una función incorporada de unicode (). Para convertir una cadena en unicode, simplemente obtenga el valor unicode del caracter, y haga esto:
my_str = "/u221a25"
my_str = u"{}".format(my_str)
print(my_str)
>>> √25
Puede ser un poco exagerado, pero cuando trabajo con ascii y unicode en los mismos archivos, repetir la decodificación puede ser un problema, esto es lo que uso:
def make_unicode(input):
if type(input) != unicode:
input = input.decode(''utf-8'')
return input
else:
return input
Si los métodos anteriores no funcionan, también puede decirle a Python que ignore partes de una cadena que no puede convertir a utf-8:
stringnamehere.decode(''utf-8'', ''ignore'')
Si te entiendo correctamente, tienes una cadena de bytes codificada en utf-8 en tu código.
La conversión de un byte-string a una cadena Unicode se conoce como decodificación (unicode -> byte-string es la codificación).
Lo haces usando la función unicode o el método de decode . Ya sea:
unicodestr = unicode(bytestr, encoding)
unicodestr = unicode(bytestr, "utf-8")
O:
unicodestr = bytestr.decode(encoding)
unicodestr = bytestr.decode("utf-8")
Traduzca con ord () y unichar (). Todos los caracteres Unicode tienen un número asociado, algo así como un índice. Así que Python tiene algunos métodos para traducir entre un char y su número. Un inconveniente es un ejemplo. Espero que pueda ayudar.
>>> C = ''ñ''
>>> U = C.decode(''utf8'')
>>> U
u''/xf1''
>>> ord(U)
241
>>> unichr(241)
u''/xf1''
>>> print unichr(241).encode(''utf8'')
ñ
>>> plain_string = "Hi!"
>>> unicode_string = u"Hi!"
>>> type(plain_string), type(unicode_string)
(<type ''str''>, <type ''unicode''>)
^ Esta es la diferencia entre una cadena de bytes (plain_string) y una cadena Unicode.
>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
^ Convertir a unicode y especificar la codificación.
city = ''Ribeir/xc3/xa3o Preto''
print city.decode(''cp1252'').encode(''utf-8'')