在Python中打印Unicode字符(带'\ x00')

时间:2014-03-06 17:30:25

标签: python-2.7 unicode

我正在尝试在python中打印unicode字符。

发生了什么:

$ python -c "print u'TEXT'" | xxd
0000000: 5445 5854 0a                             TEXT.

预期:

$ python -c "print u'TEXT'" | xxd
0000000: 5400 4500 5800 5400 0a                   T.E.X.T..

我做错了什么?请帮忙!

1 个答案:

答案 0 :(得分:1)

Python在打印之前将Unicode字符串转换为字节。您看到的是正确的输出,例如b'T' == b'\x54'

$ python -c"print u'TEXT'.encode('ascii')" | xxd
0000000: 5445 5854 0a                             TEXT.

不要混淆Unicode字符串和以UTF-16字符编码编码的字节字符串:

$ python -c"print u'TEXT'.encode('utf-16le')" | xxd
0000000: 5400 4500 5800 5400 0a                   T.E.X.T..

您可以使用PYTHONIOENCODING环境变量来更改用于编码整个脚本输出的字符编码:

$ PYTHONIOENCODING=utf-16le python -c"print u'TEXT'" | xxd
0000000: 5400 4500 5800 5400 0a                   T.E.X.T..