以特定的语言方式将Unicode转换为低阶字节编码?

以特定的语言方式将Unicode转换为低阶字节编码?,unicode,encoding,Unicode,Encoding,以特定的语言方式(无损地)将Unicode转换为低阶字节编码(8位)的最佳方法是什么?我想要一种标准格式,即具有广泛的库支持双向转换 如果我使用Python,我会使用repr: In [1]: x = u"Российская Федерация" In [2]: repr(x) Out[2]: "u'\\xd0\\xa0\\xd0\\xbe\\xd1\\x81\\xd1\\x81\\xd0\\xb8\\xd0\\xb9\\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd1\\

以特定的语言方式(无损地)将Unicode转换为低阶字节编码(8位)的最佳方法是什么?我想要一种标准格式,即具有广泛的库支持双向转换

如果我使用Python,我会使用repr:

In [1]: x = u"Российская Федерация"

In [2]: repr(x)
Out[2]: "u'\\xd0\\xa0\\xd0\\xbe\\xd1\\x81\\xd1\\x81\\xd0\\xb8\\xd0\\xb9\\xd1\\x81\\xd0\\xba\\xd0\\xb0\\xd1\\x8f \\xd0\\xa4\\xd0\\xb5\\xd0\\xb4\\xd0\\xb5\\xd1\\x80\\xd0\\xb0\\xd1\\x86\\xd0\\xb8\\xd1\\x8f'"

但是,我正在寻找一种具有良好库支持的格式,用于以多种语言将第二个字符串转换回第一个字符串。

UTF-8、UTF-16和UTF-32都是标准格式。也许UTF-8在互联网上最为常见;UTF-16在Windows和Java内部使用。任何支持Unicode的语言都有编码和解码功能。在Python中,可以使用unicode字符串的
.encode
方法和字符串的
.decode
方法在它们之间进行转换


如果您需要7位干净的东西(没有设置第8位),还有UTF-7。

UTF-8、UTF-16和UTF-32都是标准的。也许UTF-8在互联网上最为常见;UTF-16在Windows和Java内部使用。任何支持Unicode的语言都有编码和解码功能。在Python中,可以使用unicode字符串的
.encode
方法和字符串的
.decode
方法在它们之间进行转换

如果您需要7位干净的东西(没有设置第8位),还有UTF-7

输出[2]:“u'\xd0\xa0\xd0\xbe\xd1\x81\xd1\x81\xd0\xb8\xd0\xb9\xd1\x81\xd0\xba\xd0\xb0\xd1\XBF\xd0\xa4\xd0\xb5\xd0\xb5\xd1\x80\xd0\xb0\xb0\xd1\x86\xd0\xb8\xd1\x8f”

如果这是您看到的,您的终端设置错误,它将UTF-8输入视为ISO-8859-1(或Windows控制台中的cp1252,无法正确设置)

的正确Python表示应该是Unicode文本:

u'\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0430\u044f \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f'
这与JavaScript/JSON字符串文字非常接近

"\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0430\u044f \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f"
如果您想要Unicode字符串的7位安全(ASCII)表示,JSON是一种合理的格式选择。使用
json.dumps()
而不是破解Python repr,因为这两种格式之间存在一些微妙的不一致

您可以尝试的其他易于理解的ASCII表示可能包括URL编码(
%D0%A0%D0%BE…
)和XML字符转义(
&&x0420;&x043e;&x0441;…

如Max所述,如果您只需要一个不需要7位安全的任意二进制表示,只需
.encode('utf-8')

输出[2]:“u'\xd0\xa0\xd0\xbe\xd1\x81\xd1\x81\xd0\xb8\xd0\xb9\xd1\x81\xd0\xba\xd0\xb0\xd1\XBF\xd0\xa4\xd0\xb5\xd0\xb5\xd1\x80\xd0\xb0\xb0\xd1\x86\xd0\xb8\xd1\x8f”

如果这是您看到的,您的终端设置错误,它将UTF-8输入视为ISO-8859-1(或Windows控制台中的cp1252,无法正确设置)

的正确Python表示应该是Unicode文本:

u'\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0430\u044f \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f'
这与JavaScript/JSON字符串文字非常接近

"\u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0430\u044f \u0424\u0435\u0434\u0435\u0440\u0430\u0446\u0438\u044f"
如果您想要Unicode字符串的7位安全(ASCII)表示,JSON是一种合理的格式选择。使用
json.dumps()
而不是破解Python repr,因为这两种格式之间存在一些微妙的不一致

您可以尝试的其他易于理解的ASCII表示可能包括URL编码(
%D0%A0%D0%BE…
)和XML字符转义(
&&x0420;&x043e;&x0441;…

如Max所述,如果您只需要一个不需要7位安全的任意二进制表示,只需
.encode('utf-8')