从Python unicode字符串获取UTF-8字符代码

时间:2014-08-12 13:55:59

标签: python encoding utf-8 python-2.6

我从命令行读取一个字符串,我知道它是韩文编码为UTF-8。我通过运行这样的命令来获取字符串

<my_command> | od -t x1

给了我:

0000000 ec a7 80 ec 97 ad 2f ea b5 ad ea b0 80 0a
0000016

六个UTF-8字符为{eca780}{ec97ad}{2f}{eab5ad}{eab080}{0a},然后我使用

在Python中读取它
utf8_str = unicode(text_from_the_cl, encoding='utf-8')

我想要做的是能够看到我读过的字符串UTF-8代码中我读过的字符。所以像\uc9c0\uc5ed/\uad6d\uac00之类的东西会很好。这只是为了检查它们是否正在被正确读取。

我应该指出这是Python 2.6.x - 我无法控制

2 个答案:

答案 0 :(得分:1)

使用encode方法:

utf8_str.encode('utf8')

请注意,utf8_str并不是变量的重要名称。原始字节序列使用UTF-8编码来表示Unicode字符;致unicode&#34;解码&#34;他们进入实际的Unicode代码点。要恢复字节,只需将代码点重新编码为UTF-8。

答案 1 :(得分:1)

如果您要验证unicode字符串的内容,请使用repr() function

>>> from binascii import unhexlify
>>> unhexlify(''.join('ec a7 80 ec 97 ad 2f ea b5 ad ea b0 80 0a'.split()))
'\xec\xa7\x80\xec\x97\xad/\xea\xb5\xad\xea\xb0\x80\n'
>>> print unhexlify(''.join('ec a7 80 ec 97 ad 2f ea b5 ad ea b0 80 0a'.split())).decode('utf8')
지역/국가

>>> print repr(unhexlify(''.join('ec a7 80 ec 97 ad 2f ea b5 ad ea b0 80 0a'.split())).decode('utf8'))
u'\uc9c0\uc5ed/\uad6d\uac00\n'

repr()值的unicode结果对非ASCII和非Latin1代码点使用\uhhhh转义序列;对于Latin 1代码点和不可打印字符,使用\xhh转义序列。