我从命令行读取一个字符串,我知道它是韩文编码为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}
,然后我使用
utf8_str = unicode(text_from_the_cl, encoding='utf-8')
我想要做的是能够看到我读过的字符串UTF-8代码中我读过的字符。所以像\uc9c0\uc5ed/\uad6d\uac00
之类的东西会很好。这只是为了检查它们是否正在被正确读取。
(我应该指出这是Python 2.6.x - 我无法控制)
答案 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
转义序列。