【发布时间】:2015-05-26 15:51:17
【问题描述】:
我的 python3 脚本通过管道从 c++ 程序接收字符串。 通过 Unicode 代码点编码的字符串。我需要正确解码。
例如,考虑包含西里尔符号的字符串:'тест test'
尝试使用 python3 对该字符串进行编码:print('тест test'.encode())。我们得到了b'\xd1\x82\xd0\xb5\xd1\x81\xd1\x82 test'
C++ 程序将此字符串编码为:b'\u00D1\u0082\u00D0\u00B5\u00D1\u0081\u00D1\u0082 test'
编码后的字符串看起来非常相似——python3 使用\x (2bits) 而c++ 程序使用\u (4bits)。
但我不知道如何将b'\u00D1\u0082\u00D0\u00B5\u00D1\u0081\u00D1\u0082 test' 转换为'тест test'。
主要问题-python3将b'\u00D1\u0082\u00D0\u00B5\u00D1\u0081\u00D1\u0082'视为8个字符的字符串,但它只包含4个字符
【问题讨论】:
-
显示您的 C++ 编码代码。看起来它将编码字节存储在
wchar_t数组中,这是不正确的。 -
我没有c++程序的源码
标签: string python-3.x unicode