我有一个浏览器,它向我的Python服务器发送utf-8字符,但当我从查询字符串中检索它时,Python返回的编码是ASCII。如何将普通字符串转换为utf-8?
注意:从web传递的字符串已经被UTF-8编码,我只是想让Python将其视为UTF-8而不是ASCII。
我有一个浏览器,它向我的Python服务器发送utf-8字符,但当我从查询字符串中检索它时,Python返回的编码是ASCII。如何将普通字符串转换为utf-8?
注意:从web传递的字符串已经被UTF-8编码,我只是想让Python将其视为UTF-8而不是ASCII。
当前回答
你还可以这样做:
from unidecode import unidecode
unidecode(yourStringtoDecode)
其他回答
在.py文件的顶部添加以下一行:
# -*- coding: utf-8 -*-
允许你在脚本中直接编码字符串,就像这样:
utfstr = "ボールト"
使用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')
ñ
是的,你可以添加
# -*- coding: utf-8 -*-
在源代码的第一行。
你可以在这里阅读更多细节https://www.python.org/dev/peps/pep-0263/
你可以使用python的标准库编解码器模块。
import codecs
codecs.decode(b'Decode me', 'utf-8')
首先,Python中的str是用Unicode表示的。 其次,UTF-8是将Unicode字符串编码为字节的编码标准。有很多编码标准(例如UTF-16、ASCII、SHIFT-JIS等)。
当客户端使用UTF-8向服务器发送数据时,他们发送的是一堆字节,而不是str。
你收到一个str,因为“库”或“框架”,你正在使用,已经隐式转换一些随机字节到str。
在底层,只有一堆字节。你只需要要求“库”以字节为单位给你请求内容,你将自己处理解码(如果库不能给你,那么它是试图做黑魔法,那么你不应该使用它)。
解码UTF-8编码字节到str: bs.decode(' UTF-8 ') 编码str到UTF-8字节:s.encode(' UTF-8 ')