python xml

python xml

刚刚学习python
有点小问题
用python处理xml的时候,如果xml中有汉字的话,就会报错
即使你设定xml文件的编码为utf8也不好使
那位gg能帮忙解决一下?
整个文件都要存为utf-8编码才行,光声明是utf-8是不够的。
推荐用UniRed编辑utf-8文件
文件已经转换编码了,可是运行的时候又提示说:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u7ea2' in position 0: ordinal not in range(12
看起来好像是ascii不能对UTF8的字符进行编码?
我的系统变量:
sun@server2:/data/wwwftp/psp/lesson$ locale
LANG=zh_CN
LC_CTYPE="zh_CN"
LC_NUMERIC="zh_CN"
LC_TIME="zh_CN"
LC_COLLATE="zh_CN"
LC_MONETARY="zh_CN"
LC_MESSAGES="zh_CN"
LC_PAPER="zh_CN"
LC_NAME="zh_CN"
LC_ADDRESS="zh_CN"
LC_TELEPHONE="zh_CN"
LC_MEASUREMENT="zh_CN"
LC_IDENTIFICATION="zh_CN"
LC_ALL=

sun@server2:/data/wwwftp/psp/lesson$ locale -a
C
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
POSIX
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
zh_TW
zh_TW.big5
zh_TW.euctw
zh_TW.utf8

究竟是哪里出了问题?
不一定是定义的问题,可能要转换时会出问题,你这个是在unix下面转换的,我以前做一个是在win32下编的:
unicode("中文","gb2312").encode("utf8"),试试看可不可以
楼上的,这个是在什么地方测试的?我试的结果:

[Copy to clipboard] [ - ]
CODE:
>>> unicode("中文","gb2312).encode("utf8")
  File "<stdin>", line 1
    unicode("中文","gb2312).encode("utf8")
                                           ^
SyntaxError: invalid syntax

出错的箭头是指向最后的utf8的

unicode("中文","gb2312).encode("utf8")

gb2312的双引号不完整,前面有,后面没有。当然出错了。
啊?怎么这么粗心?新结果〉〉〉

[Copy to clipboard] [ - ]
CODE:
>>> unicode("中文","gb2312").encode("utf8")
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
LookupError: unknown encoding: gb2312

他为什么不知道这个编码呢??换成标准的系统编码试试

[Copy to clipboard] [ - ]
CODE:
>>> unicode("中文","zh_CN.gb2312").encode("utf8")
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
LookupError: unknown encoding: zh_CN.gb2312

我晕了
在python 2.4中才自带对gb2312, gbk, gb18030 的支持,如果是2.4以前的版本需要安装一个叫cjkcodec(好象是这样)的第三方包才行。
原来是这样!win下的2.4版本确实可以用了,谢谢!