dav*_*vid 6 python unicode utf-8 python-2.7
我遇到了一个显示Unicode表的网站。
当我打印字母“ ???”时:
>>> x = '???'
>>> x
'\xd7\xa1\xd7\xa4\xd7\xa8'
我得到这个角色'\xd7\xa1\xd7\xa4\xd7\xa8'。
我认为python对单词'???'进行编码 使用utf-8 Unicode,因为它是默认设置,对吗?
但是当我运行这段代码时:
>>> x = u'???'
>>> x
u'\u05e1\u05e4\u05e8'
我得到了u'\u05e1\u05e4\u05e8',这是Unicode点,对吗?
怎么把utf8-literal转换成Unicode点?
@在第一个示例中,您创建了一个字节字符串(类型str)。您的终端确定了编码(在本例中为 UTF-8)。
在第二个示例中,您创建了一个 Unicode 字符串(类型unicode)。Python 自动检测您的终端使用的编码(来自sys.stdin.encoding)并将字节从 UTF-8 解码为 Unicode 代码点。
您可以通过解码进行从字节字符串到 Unicode 字符串的相同转换:
unicode_x = bytestring_x.decode('utf8')
要走向另一个方向,您需要编码:
bytestring_x = unicode_x.encode('utf8')
您通过使用字符的实际 UTF-8 字节来指定文字;这在终端中运行良好,但在 Python 源代码中不起作用;Python 2 源代码仅作为 ASCII 文本加载。您可以通过设置源代码编码声明来更改此设置。这在PEP 263 中有规定;它必须是源文件中的第一行或第二行。例如:
# encoding: UTF-8
或者您可以坚持使用\uhhhh和\xhh转义序列来表示非 ASCII 字符。
您可能想了解 Unicode 和编码(二进制)字节字符串之间的区别,以及它们与 Python 的关系:
绝对最低要求每个软件开发人员绝对必须了解 Unicode 和字符集(没有任何借口!)作者:Joel Spolsky
内德巴切尔德的实用 Unicode
| 归档时间: | 
 | 
| 查看次数: | 1830 次 | 
| 最近记录: |