Python字符串中的u前缀是什么?

就像:

u'Hello'

我猜它表示“统一码”,对吗?

如果有,从什么时候开始可用的?

291462 次浏览

我猜它显示的是“Unicode”,对吗?

是的。

如果有,从什么时候开始可用?

Python 2. x。

在Python 3中。x字符串默认使用Unicode,不需要u前缀。注意:在Python 3.0-3.2中,u是一个语法错误。在Python 3.3+中,更容易编写2/3兼容的应用程序是合法的。

所有人类使用的字符串都应该使用u""。

我发现下面的心态在处理Python字符串时很有帮助:所有 Python清单字符串应该使用u""语法。""语法仅用于字节数组。

在开始抨击之前,让我解释一下。大多数Python程序一开始都使用""作为字符串。但随后他们需要支持来自互联网的文档,所以他们开始使用"".decode,突然之间,他们到处都是关于解码这个和那个的异常——这都是因为对字符串使用了""。在这种情况下,Unicode确实像病毒一样会造成严重破坏。

但是,如果你遵循我的规则,你就不会被感染(因为你已经被感染了)。

u'Some String'中的u意味着你的字符串是Unicode字符串

问:我非常非常匆忙,从谷歌搜索公司来的。我试图将数据写入文件,却得到一个错误,我需要最简单的,可能有缺陷的解决方案。

A:你真的应该读Joel的每个软件开发人员绝对必须知道Unicode和字符集(没有借口!)关于字符集的文章。

问:对不起,没有时间代码

答:好。尝试str('Some String')'Some String'.encode('ascii', 'ignore')。但是你真的应该阅读一些关于转换Unicode字符串的回答和讨论,非常棒,非常棒,是字符编码的入门读物。

我来这里是因为我的requests输出上有滑稽炭综合征。我以为response.text会给我一个正确解码的字符串,但在输出中,我发现有趣的双字符,德语变音应该是。

原来response.encoding以某种方式为空,因此response不知道如何正确解码内容,只是将其视为ASCII(我猜)。

我的解决方案是用'response '获取原始字节。并手动将decode('utf_8')应用于它。结果是Umlaute。

正确解码的

皮毛

Vs.不恰当的解码

fĂźr