问题:如何在Python中将字符串转换为utf-8
我有一个将utf-8字符发送到我的Python服务器的浏览器,但是当我从查询字符串中检索到它时,Python返回的编码是ASCII。如何将纯字符串转换为utf-8?
注意:从网络传递的字符串已经是UTF-8编码的,我只想让Python将其视为UTF-8而不是ASCII。
回答 0
>>> plain_string = "Hi!"
>>> unicode_string = u"Hi!"
>>> type(plain_string), type(unicode_string)
(<type 'str'>, <type 'unicode'>)
^这是字节字符串(plain_string)和unicode字符串之间的差异。
>>> s = "Hello!"
>>> u = unicode(s, "utf-8")
^转换为unicode并指定编码。
回答 1
如果上述方法不起作用,您还可以告诉Python忽略无法转换为utf-8的字符串部分:
stringnamehere.decode('utf-8', 'ignore')
回答 2
可能有些矫kill过正,但是当我在同一文件中使用ascii和unicode时,重复解码可能会很痛苦,这就是我使用的方法:
def make_unicode(input):
if type(input) != unicode:
input = input.decode('utf-8')
return input
回答 3
将以下行添加到.py文件的顶部:
# -*- coding: utf-8 -*-
允许您直接在脚本中编码字符串,如下所示:
utfstr = "ボールト"
回答 4
如果我理解正确,则您的代码中包含utf-8编码的字节字符串。
将字节字符串转换为unicode字符串称为解码(unicode->字节字符串正在编码)。
unicodestr = unicode(bytestr, encoding)
unicodestr = unicode(bytestr, "utf-8")
要么:
unicodestr = bytestr.decode(encoding)
unicodestr = bytestr.decode("utf-8")
回答 5
city = 'Ribeir\xc3\xa3o Preto'
print city.decode('cp1252').encode('utf-8')
回答 6
在Python 3.6中,它们没有内置的unicode()方法。默认情况下,字符串已经存储为unicode,并且不需要转换。例:
my_str = "\u221a25"
print(my_str)
>>> √25
回答 7
使用ord()和unichar()进行翻译。每个Unicode字符都有一个关联的数字,如索引。因此,Python有一些方法可以在char和他的数字之间进行转换。缺点是一个例子。希望能有所帮助。
>>> C = 'ñ'
>>> U = C.decode('utf8')
>>> U
u'\xf1'
>>> ord(U)
241
>>> unichr(241)
u'\xf1'
>>> print unichr(241).encode('utf8')
ñ
回答 8
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。