就像:
u'Hello'
我猜它表示“统一码”,对吗?
如果有,从什么时候开始可用的?
你是对的,见3.1.3。Unicode字符串< / >。
它是Python 2.0以来的语法。
Python 3让它们变得多余,因为默认的字符串类型是Unicode。版本3.0到3.2删除了它们,但为了与Python 2兼容,它们是在3.3+中重新添加,以辅助2到3的过渡。
我猜它显示的是“Unicode”,对吗?
是的。
如果有,从什么时候开始可用?
Python 2. x。
在Python 3中。x字符串默认使用Unicode,不需要u前缀。注意:在Python 3.0-3.2中,u是一个语法错误。在Python 3.3+中,更容易编写2/3兼容的应用程序是合法的。
u
所有人类使用的字符串都应该使用u""。
我发现下面的心态在处理Python字符串时很有帮助:所有 Python清单字符串应该使用u""语法。""语法仅用于字节数组。
u""
""
在开始抨击之前,让我解释一下。大多数Python程序一开始都使用""作为字符串。但随后他们需要支持来自互联网的文档,所以他们开始使用"".decode,突然之间,他们到处都是关于解码这个和那个的异常——这都是因为对字符串使用了""。在这种情况下,Unicode确实像病毒一样会造成严重破坏。
"".decode
但是,如果你遵循我的规则,你就不会被感染(因为你已经被感染了)。
u'Some String'中的u意味着你的字符串是Unicode字符串。
u'Some String'
问:我非常非常匆忙,从谷歌搜索公司来的。我试图将数据写入文件,却得到一个错误,我需要最简单的,可能有缺陷的解决方案。
A:你真的应该读Joel的每个软件开发人员绝对必须知道Unicode和字符集(没有借口!)关于字符集的文章。
问:对不起,没有时间代码
答:好。尝试str('Some String')或'Some String'.encode('ascii', 'ignore')。但是你真的应该阅读一些关于转换Unicode字符串和这的回答和讨论,非常棒,非常棒,是字符编码的入门读物。
str('Some String')
'Some String'.encode('ascii', 'ignore')
我来这里是因为我的requests输出上有滑稽炭综合征。我以为response.text会给我一个正确解码的字符串,但在输出中,我发现有趣的双字符,德语变音应该是。
requests
response.text
原来response.encoding以某种方式为空,因此response不知道如何正确解码内容,只是将其视为ASCII(我猜)。
response.encoding
response
我的解决方案是用'response '获取原始字节。并手动将decode('utf_8')应用于它。结果是Umlaute。
decode('utf_8')
正确解码的
皮毛
Vs.不恰当的解码
fĂźr