最近在写通过PDU方式发送SMS的脚本。unicode这个问题困扰了我几个小时,后来居然歪打正着写对了。现在才了解这个原理:
1. 先将string转换为unicode。为啥要做这一步呢?如果不做,一个中文字符是两个char :0xd6 0xd0 ;做完后,就是一个码字了。
str_str = "中a"
str_str = unicode(str_str)
2. 得到每个码字的码值:通过ord()获得。
str_uni = ""
for char in str_str:
char_uni = str(hex(ord(char)))
str_uni += char_uni
全部代码:
1: # coding=gbk
2:
3: def GetUnicodeFromString(str_str):
4: str_str = unicode(str_str)
5: str_uni = ""
6: for char in str_str:
7: char_uni = str(hex(ord(char)))
8: str_uni += char_uni
9: return str_uni
10:
11: print GetUnicodeFromString("中a")
运行结果:0x4e2d0x61