将 UTF-16 转换为 UTF-8
Converting UTF-16 to UTF-8
我正在从文件中加载字符串。当我打印出字符串时:
print my_string
print binascii.hexlify(my_string)
我得到:
2DF5
0032004400460035
表示这个字符串是UTF-16
。我想将此字符串转换为 UTF-8
以便上面的代码产生此输出:
2DF5
32444635
我试过:
my_string.decode('utf-8')
哪个输出:
32004400460035
编辑:
这是一个快速示例:
hello = 'hello'.encode('utf-16')
print hello
print binascii.hexlify(hello)
hello = hello[2:].decode('utf-8')
print hello
print binascii.hexlify(hello)
产生此输出:
��hello
fffe680065006c006c006f00
hello
680065006c006c006f00
预期输出为:
��hello
fffe680065006c006c006f00
hello
68656c6c6f
您的字符串似乎已使用 utf-16be
编码:
In [9]: s = "2DF5".encode("utf-16be")
In [11]: print binascii.hexlify(s)
0032004400460035
因此,为了将其转换为utf-8
,您首先需要对其进行解码,然后对其进行编码:
In [14]: uni = s.decode("utf-16be")
In [15]: uni
Out[15]: u'2DF5'
In [16]: utf = uni.encode("utf-8")
In [17]: utf
Out[17]: '2DF5'
或者,一步到位:
In [13]: s.decode("utf-16be").encode("utf-8")
Out[13]: '2DF5'
我正在从文件中加载字符串。当我打印出字符串时:
print my_string
print binascii.hexlify(my_string)
我得到:
2DF5
0032004400460035
表示这个字符串是UTF-16
。我想将此字符串转换为 UTF-8
以便上面的代码产生此输出:
2DF5
32444635
我试过:
my_string.decode('utf-8')
哪个输出:
32004400460035
编辑:
这是一个快速示例:
hello = 'hello'.encode('utf-16')
print hello
print binascii.hexlify(hello)
hello = hello[2:].decode('utf-8')
print hello
print binascii.hexlify(hello)
产生此输出:
��hello
fffe680065006c006c006f00
hello
680065006c006c006f00
预期输出为:
��hello
fffe680065006c006c006f00
hello
68656c6c6f
您的字符串似乎已使用 utf-16be
编码:
In [9]: s = "2DF5".encode("utf-16be")
In [11]: print binascii.hexlify(s)
0032004400460035
因此,为了将其转换为utf-8
,您首先需要对其进行解码,然后对其进行编码:
In [14]: uni = s.decode("utf-16be")
In [15]: uni
Out[15]: u'2DF5'
In [16]: utf = uni.encode("utf-8")
In [17]: utf
Out[17]: '2DF5'
或者,一步到位:
In [13]: s.decode("utf-16be").encode("utf-8")
Out[13]: '2DF5'