关于Python2.4的两个中文问题求解

Patrick_DK 2006-01-16 11:30:55
关于Python2.4的两个中文问题求解,请给出经测试的可运行Python代码,谢谢

问题一:如何把一个编码过的中文字符"\u5361",转回成中文字符

问题二:如何把一个中文字符串插入到XML文件中

...全文
429 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyzxyz1111 2006-01-18
  • 打赏
  • 举报
回复
在.py文件中打印
sys.getdefaultencoding() 和locale.getdefaultlocale() 看看是什么?
Patrick_DK 2006-01-18
  • 打赏
  • 举报
回复
to xyzxyz111:

print sys.getdefaultencoding(), locale.getdefaultlocale()

我在.py中得到结果:ascii ('zh_CN', 'cp936')

在Python shell里得到的结果也是ascii ('zh_CN', 'cp936'

一样啊
limodou 2006-01-17
  • 打赏
  • 举报
回复
这种问题在邮件列表中讨论过很多。建议你去查一查。

>>> u = u"\u5361"
>>> print u.encode('gbk')


xml中建议使用utf-8编码。不知道你想如何生成xml文件,因为有许多种方式,如直接写文件,那么只要保证写入的中文是utf-8编码即可。如果是使用其它的xml包,如minidom, elementTree之类的,要保证你的中文是unicode。因为xml的dom树以对象形式存在时,都是unicode编码的。

如果你不是很清楚,minidom, elementTree建议你去找相关资料先学习一下。
Patrick_DK 2006-01-17
  • 打赏
  • 举报
回复
哎,真是折腾死了
Patrick_DK 2006-01-17
  • 打赏
  • 举报
回复
工作无法继续了,请问这是为何?
Patrick_DK 2006-01-17
  • 打赏
  • 举报
回复
晕死,我在Python Shell里面运行
>>> a = "\u53d6\u6d88"
>>> b = eval('u"%s"' % a)
>>> print b
取消
正常显示

但是我在Eclipse里写了个.py运行同样代码,就报错:
print b
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordin
al not in range(128)
Patrick_DK 2006-01-17
  • 打赏
  • 举报
回复
没有人能帮忙解决一下么?
limodou 2006-01-17
  • 打赏
  • 举报
回复
http://wiki.woodpecker.org.cn/moin/MiniDOM

目前python所用的底层xml解析不支持gb2312, gbk之类的编码,但支持utf-8编码。因此一直建议xml文件中有中文时使用utf-8编码。同时如果在运行时生成dom结点,则需要使用unicode编码的汉字。只要是utf-8编码的xml文件,minidom解析时不会报错,只是它处理大文件时效率可能比较底,建议使用elementTree,它还有全是C写的版本,速度更快。小文件可以考虑minidom,因为它是标准模块,而elementTree不是标准的。
Patrick_DK 2006-01-17
  • 打赏
  • 举报
回复
to limodou() ( ) 信誉:105:

没有找到你写的关于minidom的文章哎,能否给个具体连接

还有个问题,如果xml文件中已经包涵了中文字符,那么minidom在parse的时候会报错的,如何处理呢?
Patrick_DK 2006-01-17
  • 打赏
  • 举报
回复
谢谢回复,我回家测试一下,如果没问题就结分,还有问题就再来请教
limodou 2006-01-17
  • 打赏
  • 举报
回复
1. 使用eval最简单

>>> a = "\u5361"
>>> b = eval('u"%s"' % a)
>>> b
u'\u5361'

2. s = u.encode('gbk') 这样就不是unicode了,而是gbk。u就应该是unicode。

在google上去找minidom,我以前写过文章。

邮件列表:

python.cn
http://groups-beta.google.com/group/python-cn


Patrick_DK 2006-01-17
  • 打赏
  • 举报
回复
问题1:我从.properties多语言属性文件中读取出来的是"\u5361",请问如何配上u呢?

问题2:我是通过file = open(path, 'w')来打开文件然后file.write写进去的,请问如果只是用s = u.encode('gbk')后,就可以这个字符串s设置到dom的element中去,然后再写入文件么?

我用的是minidom,主要是不熟悉怎么处理中文操作
如果你可以给几个所谓的“邮件列表”连接,那非常感谢

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧