我有一个浏览器,它向我的Python服务器发送utf-8字符,但当我从查询字符串中检索它时,Python返回的编码是ASCII。如何将普通字符串转换为utf-8?

注意:从web传递的字符串已经被UTF-8编码,我只是想让Python将其视为UTF-8而不是ASCII。


当前回答

是的,你可以添加

# -*- coding: utf-8 -*-

在源代码的第一行。

你可以在这里阅读更多细节https://www.python.org/dev/peps/pep-0263/

其他回答

如果上面的方法不起作用,你也可以告诉Python忽略字符串中不能转换为utf-8的部分:

stringnamehere.decode('utf-8', 'ignore')

可能有点过度,但当我在相同的文件中使用ascii和unicode时,重复解码可能是一种痛苦,这就是我使用的:

def make_unicode(inp):
    if type(inp) != unicode:
        inp =  inp.decode('utf-8')
    return inp

你还可以这样做:

from unidecode import unidecode
unidecode(yourStringtoDecode)

使用ord()和unichar()进行翻译。 每个unicode字符都有一个相关联的数字,类似于索引。Python有几个方法可以在char和number之间转换。缺点是一个ñ的例子。希望能有所帮助。

>>> C = 'ñ'
>>> U = C.decode('utf8')
>>> U
u'\xf1'
>>> ord(U)
241
>>> unichr(241)
u'\xf1'
>>> print unichr(241).encode('utf8')
ñ

在Python 3.6中,它们没有内置的unicode()方法。 字符串在默认情况下已经存储为unicode,不需要进行转换。例子:

my_str = "\u221a25"
print(my_str)
>>> √25