【问题标题】:Printing Unicode Characters in Python (with '\x00')在 Python 中打印 Unicode 字符(使用 '\x00')
【发布时间】:2014-03-06 17:30:24
【问题描述】:

我正在尝试在 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..

我做错了什么?请帮忙!

【问题讨论】:

    标签: python-2.7 unicode


    【解决方案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..
    

    【讨论】:

    • 完美。就是这样!谢谢!
    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 2017-02-16
    • 2012-06-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多