URN Logo
UNIX Resources » Linux » China Linux Forum » Python 编 程 » 8 » python2.4,编码问题
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
python2.4,编码问题
python2.4,编码问题 - alula [2005-06-08 14:48 | 144 byte(s)]
 
Re: python2.4,编码问题 - limodou [2005-06-08 22:33 | 147 byte(s)]
 
Re: python2.4,编码问题 - alula [2005-06-09 09:33 | 1,986 byte(s)]
 
Re: python2.4,编码问题 - passworld [2005-06-09 09:55 | 215 byte(s)]
 
Re: python2.4,编码问题 - passworld [2005-06-09 09:47 | 173 byte(s)]
 
Subject: python2.4,编码问题
Author: alula    Posted: 2005-06-08 14:48    Length: 144 byte(s)
[Original] [Print] [Top]
xml.sax 模块不能正确处理gb2312编码的xml文件是吗?

可喜的是2.4版本有了gb2312支持,可以使用unicode(xxx, 'gb2312')了。
----
温故知新
[Original] [Print] [Top]
Subject: Re: python2.4,编码问题
Author: limodou    Posted: 2005-06-08 22:33    Length: 147 byte(s)
[Original] [Print] [Top]
没有试过。因为sax是用C写的模块,我想它可能不支持gb2312。因此还是使用utf-8或把xml的头去掉(encoding='gb2312'那句),然后转成utf-8后,再使用sax就行了。
----
[Original] [Print] [Top]
Subject: Re: python2.4,编码问题
Author: alula    Posted: 2005-06-09 09:33    Length: 1,986 byte(s)
[Original] [Print] [Top]
xml.sax(Simple API for XML)是C写的吗?只是接口层哦。

13.9 xml.sax -- Support for SAX2 parsers

New in version 2.0.

The xml.sax package provides a number of modules which implement the Simple API for
XML (SAX) interface for Python. The package itself provides the SAX exceptions and the
convenience functions which will be most used by users of the SAX API.

The convenience functions are:

make_parser( [parser_list])
Create and return a SAX XMLReader object. The first parser found will be used. If
parser_list is provided, it must be a sequence of strings which name modules that have
a function named create_parser(). Modules listed in parser_list will be used before
modules in the default list of parsers.


linux下的C语言libxml2-2.5 库能正确处理 gb2312编码的 xml文件。

我的权宜的办法就像你说的,先把文件读取出来,转成utf-8,把xml声明语句中的gb2312替换为ut
f-8

import re
import StringIO

def xml_utf8_open(f):
txt = ec = ''
for line in f.readlines():
if ec:
txt = txt + line
continue
x = re.match('<?xml(s|version.{4,})+encoding="(w*)".*', line)
if x:
ec = x.group(2)
txt = txt + re.sub(x.group(2), 'utf-8', line)
else:
txt = txt + line
if ec and ec != 'utf-8':
return StringIO.StringIO(unicode(txt, ec).encode('utf-8'))
return StringIO.StringIO(txt)



这段代码这么写好像很没效率,怎么改改呢?
----
温故知新
[Original] [Print] [Top]
Subject: Re: python2.4,编码问题
Author: passworld    Posted: 2005-06-09 09:47    Length: 173 byte(s)
[Original] [Print] [Top]
我记得以前在这里说过,python xml 是基于expat的,expat的国际化国际化支持主要在拉丁文的8比特文字,utf8也有,国标还是用libxml2的python包比较合适。


----
[Original] [Print] [Top]
Subject: Re: python2.4,编码问题
Author: passworld    Posted: 2005-06-09 09:55    Length: 215 byte(s)
[Original] [Print] [Top]
你为什么要一行一行的re.search? re.match? 直接re.search 第一个匹配,然后改变或者干脆 re.sub 第一个,不就可以了?re 把所有输入当一个字串,有没有换行他不管,只是re.M在^,$时稍有不同。在这个具体应用里也没关系。
----
[Original] [Print] [Top]
« Previous thread
xml.parsers.expat 与 xml.dom.minidom 都不是线程安全的
Python 编 程
8
Next thread »
python可以画风廓线图吗?
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 04:11:11, cost 0.05734395980835 ms.