Python UCS2从十六进制字符串解码

时间:2014-01-08 17:38:01

标签: python string encoding

我正在使用python 2.7并需要将十六进制字符串解码为unicode字符串。 在php中我简单地做了以下几点:

$line=hex2bin($line);
$finish=iconv("UCS-2BE","UTF-8",$nline);
例如,

十六进制字符串     000A0033002004200430043404300440000A003400200417043D0430043A043E043C0441044204320430000A00350020041C04430437044B043A0430000A00380020041504490435应该是

3 Радар
4 Знакомства
5 Музыка
8 Еще

如何在python中使用?

2 个答案:

答案 0 :(得分:7)

使用binascii.unhexlify,然后将bytes.decodeutf-16-be编码一起使用:

>>> import binascii

>>> line = '000A0033002004200430043404300440000A003400200417043D0430043A043E043C0441044204320430000A00350020041C04430437044B043A0430000A00380020041504490435'
>>> binascii.unhexlify(line)
b'\x00\n\x003\x00 \x04 \x040\x044\x040\x04@\x00\n\x004\x00 \x04\x17\x04=\x040\x04:\x04>\x04<\x04A\x04B\x042\x040\x00\n\x005\x00 \x04\x1c\x04C\x047\x04K\x04:\x040\x00\n\x008\x00 \x04\x15\x04I\x045'
>>> print(binascii.unhexlify(line).decode('utf-16-be'))

3 Радар
4 Знакомства
5 Музыка
8 Еще

答案 1 :(得分:3)

>>> line = '000A0033002004200430043404300440000A003400200417043D0430043A043E043C0441044204320430000A00350020041C04430437044B043A0430000A00380020041504490435'
>>> print unicode(line.decode("hex"), "utf-16-be").encode("utf8")

3 Радар
4 Знакомства
5 Музыка
8 Еще