Python论坛  - 讨论区

标题:[python-chinese] Fwd: 对limodou 大侠有 个不情之请////Re: Re: [ python-chinese] 怎么得到http lib的异常呢?

2005年02月22日 星期二 13:01

limodou limodou at gmail.com
Tue Feb 22 13:01:18 HKT 2005

文章没发到列表中。


---------- Forwarded message ----------
From: limodou <limodou at gmail.com>
Date: Mon, 21 Feb 2005 15:55:08 +0800
Subject: Re: 对limodou 大侠有 个不情之请////Re: Re:  [ python-chinese] 怎么得到http  lib的异常呢?
To: hw_cg <hw_cg at huawei.com>


其实这个问题相明白了很简单:

1.字符串有很多的编码
2.不同的系统和平台有个自的编码
3.为了实现系统或平台之间的信息交互需要编码转换
4.基本上在两个处理环节上进行转换:你的系统从其它系统读 你的系统从其它系统写
5.根据需要转换的源和目标的编码。

那么常见的环节都有哪些呢?如NewEdit使用wxPython
unicode版本,那么首先要明白,所有wxPython自带的函数和类都是使用unicode的,哪怕是打开文件对话框这样的从外部输入的类也会自动将文件名转为unicode。然后可能:

使用python的自带模块操作文件系统,如:file()
使用socket发送和接收数据

总之是调用非wxPython的东西

在明白有可有需要进行编码转换的地方后,再考查到底需不需要进行编码转换。当调用的内容与你的系统编码一致时,并不需要转换。那么对方系统到底要什么样的编码的,那只能仔细看文档,靠你的经验,靠你多做测试。而且根据python所报出来的错误一般也可以判断出来。那么当发现需要编码转换时,剩下的就是如何正确进行码制转换
。

常见的编码转换分为以下几种情况:

unicode->其它编码

例如:a为unicode编码 要转为gb2312。a.encode('gb2312')

其它编码->unicode

例如:a为gb2312编码,要转为unicode. unicode(a, 'gb2312')或a.decode('gb2312')

编码1 -> 编码2

可以先转为unicode再转为编码2

如gb2312转big5
unicode(a, 'gb2312').encode('big5')

那么unicode与utf-8,
utf-16有什么区别呢。我认为unicode可以称为抽象编码,也就是它只是一种内部表示,一般不能直接保存。需要转换为它对应的编码,如utf-8和utf-16。象我们的中文系统一般就是gb2312或gbk或gb18030的编码。

除上以上的编码方法,在读写文件时还可以使用codecs的open方法在读写时进行转换。

另外我以前写过几篇blog有这方面的介绍:

[Python学习]在程序中简单地定义unicode汉字
http://www.donews.net/limodou/archive/2004/12/07/195625.aspx
[wxPython学习]unicode文本写入文件的处理
http://www.donews.net/limodou/archive/2004/06/12/27834.aspx
[Python学习]再谈文件编码的处理 http://www.donews.net/limodou/archive/2004/10/11/127355.aspx
使用locale判断本地语言及编码 http://www.donews.net/limodou/archive/2004/04/10/11510.aspx

同时在linuxforum.net上的python版有关于unicode的讨论,可以找一下。

以上为个人见解,如有不正确之处欢迎交流。有时间再整理一下放到blog中去。

On Mon, 21 Feb 2005 15:16:53 +0800, hw_cg <hw_cg at huawei.com> wrote:
> 是的, 如果没有兴趣去处理特定异常,就用 Exception 捕获所有异常即可.
>
> ----------------------------------------------------------------------------------------------------------------
> 另外,对limodou 大侠有个不情之请:
> 鉴于最近很多人都问起关于 Python 处理各种编码方面的问题,例如中文化显示,编码转化等等.
> 占了整个帖子数量的10%左右.看来这是一个大家都会遇到的问题.
>
> limodou 大侠能否就这方面的内容做一个专题, 写一篇文章, 一劳永逸的解决这类问题.
> 否则,这样零零散散的回答,不仅很耽误您的时间,我猜想对他人的帮助效果也不好.
>

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


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

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号