24小时热门版块排行榜    

查看: 838  |  回复: 4

journeyer

铁虫 (正式写手)

[求助] 一个汉字竟坏了整个程序? 已有1人参与

最近,用python作字处理程序,发现一个特殊的汉字“䢵”(应该还有其它),当无“䢵”字时程序可以正常运行,但只要有“䢵”,程序就会中断,请论坛里高手指点。
CODE:
# -*- coding: UTF-8 -*-

import codecs, sys

print '-'*60
# 创建gbk编码器
look  = codecs.lookup("gbk")
# 创建utf-8编码器
look2 = codecs.lookup("utf-8")

a = '我爱北京天安门䢵' #去掉“䢵” windows 下运行就正常

print len(a), a
# 把a编码为内部的unicode
b = look2.decode(a)
# 返回的b[0]是数据,b[1]是长度,这个时候的类型是unicode了
print b[1], b[0], type(b[0])
# 把内部编码的unicode转换为gbk编码的字符串,encode方法会返回一个字符串类型
b2 = look.encode(b[0])
# 发现不一样的地方了吧?
print b2[1], b2[0], type(b2[0])
# codecs.encode会统计字数
print len(b2[0])

# 需要说明的是,上述程序在 Windows 下运行时会因“䢵”字存在而出问题,而在 Mac 下运行正常。

[ Last edited by jjdg on 2013-12-25 at 00:16 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sunoru

新虫 (初入文坛)

【答案】应助回帖

额,刚刚在我的电脑上试了一下,因为windows的命令行默认编码是gbk的,所以就算你已经得到了一个正确的unicode字符串,在输出到命令行的时候它还是会被转成gbk,但在gbk中并没有“䢵”这个字,导致会看到出错。。

一个解决方法是用不是gbk编码的控制台来运行这个程序,比如我用的是qt版的IPython。

(不知道还帮不帮得上楼主的忙
2楼2014-01-22 16:09:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

garyfirst

木虫 (小有名气)

用python处理汉字还真是不容易呢
CL
3楼2014-02-18 08:04:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

journeyer

铁虫 (正式写手)

???????:
2?: Originally posted by sunoru at 2014-01-22 16:09:22
??????????????????????????windows????????????????gbk????????????????????????????unicode???????????????????е??????????????gbk??????gbk?в???С?䢵??????????????????? ...

?????????????Mac????????????????Win??????а???????? gbk ???????????䢵??????
4楼2014-02-18 15:15:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

journeyer

铁虫 (正式写手)

引用回帖:
3楼: Originally posted by garyfirst at 2014-02-18 08:04:20
用python处理汉字还真是不容易呢

其实,我在Mac下运行python程序没有问题,python处理字符串还是很方便的。
5楼2014-02-18 15:17:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 journeyer 的主题更新
信息提示
请填处理意见