用lxml
库处理网页时遇到的,写个转换程序用用。
注:ASCII转unicode和中文转unicode是两个东西(起码在unicode在线转换网站上这两个不同),虽然说是中文
,其实输入英文字母也没问题(表述可能不够准确,但大概是那么个意思)。
原理
常见的unicode编码格式如下:
代码语言:javascript复制u670du52a1u5668
如果换成&#
开头的格式如下:
服务器
其实这两个是同一个东西,只是开头和进制不同
十六进制 | 十进制 | unicode转中文 |
---|---|---|
670d | 26381 | 服 |
52a1 | 21153 | 务 |
5668 | 22120 | 器 |
代码
代码语言:javascript复制测试代码
print(ord('服'))
print(ord('务'))
print(ord('器'))
# 控制台打印
# 26381
# 21153
# 22120
print(chr(26381))
print(chr(21153))
print(chr(22120))
# 控制台打印
# 服
# 务
# 器
转换代码
代码语言:javascript复制中文转
&#
格式unicode编码字符串
# 输入中文,输出str类型的&#开头的unicode编码数据
def zh2uni(zhDat):
rDat = ""
for n in zhDat:
rDat = rDat '&#' str(ord(n)) ';'
return rDat
print(zh2uni('服务器'))
# 控制台打印
# 服务器
代码语言:javascript复制
&#
格式unicode编码字符串转中文
def uni2zh(uniDat):
rDat = ''
while True:
if len(uniDat) == 0:
break
rDat = rDat chr(int(uniDat[2:7]))
uniDat = uniDat[8:]
return rDat
print(uni2zh('服务器'))
# 控制台打印
# 服务器