python对16位unicode汉字处理
来源:互联网 发布:mysql怎么删除数据库 编辑:程序博客网 时间:2024/06/13 04:12
最近笔者遇到了一个头疼的问题,从一个文件中读出的字符串里所有的汉字都是由unicode编码的,必须对这些字符串进行解码,将汉字还原。例如:字符串中是"/u7ae0",必须把它转换为u"/7ae0",即汉字中的“章”。
就这样一个简单的汉字解码,笔者尝试了三次之后才搞定。
1. 第一阶段,粗放式的原始社会
在python中有直接对单个unicode进行解码的函数,unichr()函数,通过它可以将输入的字符串转换为unicode码,但是要注意的是,unichr()函数的输入参数不是字符串,所以必须首先把字符串专程整型。
第一种方法为
ncode = int(char1,16)
uchar = unichr(ncode)
这样可以把单一个汉字转换,但是问题是,字符串中有大量的待转换,甚至有的字符串中就有十万记待转换的汉字字符,这样必须使用循环对每个字符进行转换,严重影响效率。
2.第二阶段,众里寻他千百度
第一种方法实在是不能满足需求,就在笔者将要放弃之时,在网上搜索到了解决的办法。使用decode/encode函数,decode函数和encode函数接受一个字符串做参数返回该字符串对应的解码后/编码后的字符串。其实这个函数之前就有考虑过,但是没找到对应的参数。
解决方法:
str = str.decode('unicode_escape')
str = str.encode('gbk')
第一步将字符串解码为unicode,第二步将unicode码编码为gbk汉字码。
此种方法能够将整个字符串中的汉字全部编码。
3.第三阶段,排除小问题
有了第二种方法,貌似问题迎刃而解,但是在实际使用过程中,还出现了一个小问题,在解码中,字符串中反斜杠字符被误认为转义字符了,存在部分反斜杠被误解码。
解决的方法是一个笨办法:
首先将/u替换其他某个字符如 “%u”,然后把所有的“/”,替换为“%$”,然后再把“%u”替换回来,再使用上面提的方法进行解码,解码完之后,再将“%$”替换为"/",这样问题解决了,貌似也没有太多的性能损失。
不知道有没有更好的办法,今后碰到了再想更优化的办法~
- python对16位unicode汉字处理
- Unicode对汉字的编码
- Python 对数字的千分位处理
- python unicode中文(汉字)输出
- Python对中文字符的处理(utf-8/ gbk/ unicode)
- python中的汉字处理
- python--汉字字符处理
- python汉字的处理
- python处理Unicode规则
- 利用Python对二进制数据进行按位处理
- Python Unicode与中文处理
- Python Unicode与中文处理
- Python Unicode与中文处理
- python的unicode处理关系
- Python Unicode 与中文处理
- Python Unicode与中文处理
- 标准C++对汉字unicode的解析和显示
- 汉字与unicode字符互相转换处理乱码
- linux-3
- linux-4
- linux-4
- linux-5
- linux-6
- python对16位unicode汉字处理
- linux-7
- 24点算法C++程序
- 第四次配置OGRE,出现问题。
- 常用JS验证函数大全
- 永恒族谱V3.5绿色注册版资源很好
- silverlight问题记录
- test命令
- 追求神乎其技的程式設計之道