Python论坛  - 讨论区

标题:[python-chinese] 关于xml编码的问题

2005年07月11日 星期一 05:55

kuoxin at tjub.com.cn kuoxin at tjub.com.cn
Mon Jul 11 05:55:07 HKT 2005

我书写了关于我的软件的配置文件(使用xml)如下:

http://192.168.0.1/GO/index1.htm" 
size="2" people-count="$WQ" id="30001" mini-version="1.0.000.001" 
max-version="1.0.000.002" application="go">          
。
。
。
 

以上为简写。

通过pyexpat分析完后,得到的 name属性的值将不是“荣国人”,而是一些乱码,然 
后我将编码改为UTF-8
也不行,pyexpat返回no-well format 错误。我知道对于expat它支持内置的4种编 
码us-ansi,  iso-8859-1, utf-8, utf-16,因此我扩展了他的到GB2312,使用 
XML_SetUnknownEncodingHandler,这回不返回错误了,但生成的name 属性值,也 
是乱码,不能在console上显示。



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月10日 星期日 15:09

Zoom Quiet zoom.quiet at gmail.com
Sun Jul 10 15:09:45 HKT 2005

expat ??
什么类型的处理模块哪?
为什么不使用 elementree 或是最全的 4suite 进行分析?
如果仅仅是配置文件的话,使用 dom 方式进行理解是最自然的吧?

推荐使用 elementTree 模块,
http://effbot.org/zone/pythondoc-elementtree-ElementTree.htm
非常轻便高效的 XML 处理机,除了写入中文好象有问题外;
解析是非常稳定的…………


2005/7/11, kuoxin at tjub.com.cn <kuoxin at tjub.com.cn>:
> 我书写了关于我的软件的配置文件(使用xml)如下:
> 
> http://192.168.0.1/GO/index1.htm"
> size="2" people-count="$WQ" id="30001" mini-version="1.0.000.001"
> max-version="1.0.000.002" application="go">
>>>>  
> 
> 以上为简写。
> 
> 通过pyexpat分析完后,得到的 name属性的值将不是"荣国人",而是一些乱码,然
> 后我将编码改为UTF-8
> 也不行,pyexpat返回no-well format 错误。我知道对于expat它支持内置的4种编
> 码us-ansi,  iso-8859-1, utf-8, utf-16,因此我扩展了他的到GB2312,使用
> XML_SetUnknownEncodingHandler,这回不返回错误了,但生成的name 属性值,也
> 是乱码,不能在console上显示。
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


-- 
[Time is unimportant, only life important!]

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月10日 星期日 17:10

limodou limodou at gmail.com
Sun Jul 10 17:10:55 HKT 2005

要确信当你的xml头为encoding="utf-8"时,保证文件也是使用utf-8编码保存的才可以。这个问题也是老生常谈了。建议查一查以前的邮件。

2005/7/11, kuoxin at tjub.com.cn <kuoxin at tjub.com.cn>:
> 我正在写一个程序,希望使用xml格式来配置文件,所以选用了expat XML来解析,
> 但我后来发现这个解析器不支持中文,所以我就试图使用> encoding="GB2312"?>来完成,但也失败了(expat 返回no well format 错误),
> 然后我使用expat提供的XML_SetUnknownEncodingHandler回调函数,帮助UTF-8来
> 识别编码到GB2312 (XML头编码),
> 然后生成的解析结果为不能识别的代码(GB2312)现在我不知道如何来识别该代
> 码。我也尝试使用 iconv 来转变代码,但常常会出现编码不可识别的错误 (可能
> 我不太会使用iconv,并且关于iconv的使用我发现的很少,我在cygwin下man
> iconv,其他的网上信息都只是针对某些软件的iconv配置说明较多)。我知道可以
> 使用ibm xml4c来完成对中文的支持(但是我的工期很近没有时间这么做,我当前
> 是使用c++),所以看看组里有没有人使用pyexpat知道如何来支持中文(我使用
> win2k)看看大家是不是有什么好的建议。
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月11日 星期一 05:50

shhgs shhgs.efhilt at gmail.com
Mon Jul 11 05:50:01 HKT 2005


你声明xml的时候,用的是iso-8859-1的encoding,PyExpat当然用这个解析了。

此外xml声明是什么编码,写xml的文件也必须是这个编码。你不能声明说xml的encoding是utf8,但文件本身却是用gbk编的码。先用codecs把文件读出来,看看是不是乱码。

On 7/10/05, kuoxin at tjub.com.cn <kuoxin at tjub.com.cn> wrote:
> 我书写了关于我的软件的配置文件(使用xml)如下:
> 
> http://192.168.0.1/GO/index1.htm"
> size="2" people-count="$WQ" id="30001" mini-version="1.0.000.001"
> max-version="1.0.000.002" application="go">
>>>>  
> 
> 以上为简写。
> 
> 通过pyexpat分析完后,得到的 name属性的值将不是"荣国人",而是一些乱码,然
> 后我将编码改为UTF-8
> 也不行,pyexpat返回no-well format 错误。我知道对于expat它支持内置的4种编
> 码us-ansi,  iso-8859-1, utf-8, utf-16,因此我扩展了他的到GB2312,使用
> XML_SetUnknownEncodingHandler,这回不返回错误了,但生成的name 属性值,也
> 是乱码,不能在console上显示。
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月11日 星期一 07:37

kuoxin at tjub.com.cn kuoxin at tjub.com.cn
Mon Jul 11 07:37:37 HKT 2005

我正在写一个程序,希望使用xml格式来配置文件,所以选用了expat XML来解析, 
但我后来发现这个解析器不支持中文,所以我就试图使用来完成,但也失败了(expat 返回no well format 错误), 
然后我使用expat提供的XML_SetUnknownEncodingHandler回调函数,帮助UTF-8来 
识别编码到GB2312 (XML头编码), 
然后生成的解析结果为不能识别的代码(GB2312)现在我不知道如何来识别该代 
码。我也尝试使用 iconv 来转变代码,但常常会出现编码不可识别的错误 (可能 
我不太会使用iconv,并且关于iconv的使用我发现的很少,我在cygwin下man 
iconv,其他的网上信息都只是针对某些软件的iconv配置说明较多)。我知道可以 
使用ibm xml4c来完成对中文的支持(但是我的工期很近没有时间这么做,我当前 
是使用c++),所以看看组里有没有人使用pyexpat知道如何来支持中文(我使用 
win2k)看看大家是不是有什么好的建议。


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月11日 星期一 08:44

limodou limodou at gmail.com
Mon Jul 11 08:44:12 HKT 2005

呵呵,我就怕是这个基本步骤对一些人就不清楚。那我建议你还是使用utf-8试试。我以前写过关于使用minidom来解析xml的文章,有兴趣可以看一下。只要是使用utf-8就没有问题。我想pyexpat应该可以处理的。

2005/7/11, kuoxin at tjub.com.cn <kuoxin at tjub.com.cn>:
> 是的,我使用ultraedit把它转成UTF-8了,这不过我没有写上,我觉得这是基本步
> 骤中,顺理成章应该做的。
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月11日 星期一 09:38

清风 paradise.qingfeng at gmail.com
Mon Jul 11 09:38:26 HKT 2005

用记事本转换为utf-8试试呢?好像ultraedit在转的时候会做一些处理。

2005/7/11, kuoxin at tjub.com.cn <kuoxin at tjub.com.cn>:
> 是的,我使用ultraedit把它转成UTF-8了,这不过我没有写上,我觉得这是基本步
> 骤中,顺理成章应该做的。
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


-- 
Blog:http://www.donews.net/changzheng

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月11日 星期一 14:30

huanghao at ufgov.com.cn huanghao at ufgov.com.cn
Mon Jul 11 14:30:05 HKT 2005

确实如此。你也可以用 IE 看一下这个文件,如果能正常显示就说明没问题。

你可以将编码改为 encoding="UTF-8",然后用 UltraEdit 的 ASCII 转 UTF-8 转换
一下再存盘。

python-chinese-bounces at lists.python.cn 写于 2005-07-11 05:50:01:

> 
> 你声明xml的时候,用的是iso-8859-1的encoding,PyExpat当然用这个解析了。
> 
> 此外xml声明是什么编码,写xml的文件也必须是这个编码。你不能声明说xml的
> encoding是utf8,但文件本身却是用gbk编的码。先用codecs把文件读出来,
> 看看是不是乱码。
> 
> On 7/10/05, kuoxin at tjub.com.cn <kuoxin at tjub.com.cn> wrote:
> > 我书写了关于我的软件的配置文件(使用xml)如下:
> > 
> > url="http://192.168.0.1/GO/index1.htm"
> > size="2" people-count="$WQ" id="30001" mini-version="1.0.000.001"
> > max-version="1.0.000.002" application="go">
> > 。
> > 。
> > 。
> >  
> > 
> > 以上为简写。
> > 
> > 通过pyexpat分析完后,得到的 name属性的值将不是"荣国人",而是一些乱码,
然
> > 后我将编码改为UTF-8
> > 也不行,pyexpat返回no-well format 错误。我知道对于expat它支持内置的4种
编
> > 码us-ansi,  iso-8859-1, utf-8, utf-16,因此我扩展了他的到GB2312,使用
> > XML_SetUnknownEncodingHandler,这回不返回错误了,但生成的name 属性值,
也
> > 是乱码,不能在console上显示。

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050711/8a1eb02c/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年07月11日 星期一 16:13

kuoxin at tjub.com.cn kuoxin at tjub.com.cn
Mon Jul 11 16:13:04 HKT 2005

是的,我使用ultraedit把它转成UTF-8了,这不过我没有写上,我觉得这是基本步 
骤中,顺理成章应该做的。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号