繁体   English   中英

将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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM