Python论坛  - 讨论区

标题:[python-chinese] 关于中文处理求教。

2005年09月12日 星期一 19:34

Leo Jay python.leojay at gmail.com
Mon Sep 12 19:34:19 HKT 2005

在处理中文的时候碰到一些很麻烦的事。如下程序:
# 打开文件对话框
dlg = wx.FileDialog(self, "Open a flash file", root_path, "", "Flash
files (*.swf)|*.swf|All files (*.*)|*.*", wx.OPEN+wx.FILE_MUST_EXIST)
if dlg.ShowModal() != wx.ID_OK: 
    return

# 输出选择的文件的目录名
print dlg.GetDirectory():

如果目录名中带有中文的话,就出错:
UnicodeEncodeError: 'ascii' codec can't encode characters in position
7-9: ordinal not in range(128)
虽然我知道可以用
dlg.GetDirectory().encode("cp936")强行改编码的方式来去除这个出错信息,
但是,这是建立在我假设目录名是中文的前提下的,
如果目录名中有日文怎么办?如果目录名中有其它文字怎么办?
能不能不要强行改编码呢?

谢谢.
-- 
Best Regards,
Leo Jay

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

2005年09月12日 星期一 20:52

limodou limodou at gmail.com
Mon Sep 12 20:52:52 HKT 2005

在 05-9-12,Leo Jay<python.leojay at gmail.com> 写道:
> 在处理中文的时候碰到一些很麻烦的事。如下程序:
> # 打开文件对话框
> dlg = wx.FileDialog(self, "Open a flash file", root_path, "", "Flash
> files (*.swf)|*.swf|All files (*.*)|*.*", wx.OPEN+wx.FILE_MUST_EXIST)
> if dlg.ShowModal() != wx.ID_OK:
>     return
> 
> # 输出选择的文件的目录名
> print dlg.GetDirectory():
> 
> 如果目录名中带有中文的话,就出错:
> UnicodeEncodeError: 'ascii' codec can't encode characters in position
> 7-9: ordinal not in range(128)
> 虽然我知道可以用
> dlg.GetDirectory().encode("cp936")强行改编码的方式来去除这个出错信息,
> 但是,这是建立在我假设目录名是中文的前提下的,
> 如果目录名中有日文怎么办?如果目录名中有其它文字怎么办?
> 能不能不要强行改编码呢?
> 
> 谢谢.

可以使用locale.getdefaultlocale()得到系统的语言及编码。但有时在某些系统会返回为空,这时还可以试着使用sys.getfilesystemencoding()来试,再不行就只能缺省指定一种了。


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

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

2005年09月12日 星期一 22:14

Leo Jay python.leojay at gmail.com
Mon Sep 12 22:14:25 HKT 2005

On 9/12/05, limodou <limodou at gmail.com> wrote:
> 可以使用locale.getdefaultlocale()得到系统的语言及编码。但有时在某些系统会返回为空,这时还可以试着使用sys.getfilesystemencoding()来试,再不行就只能缺省指定一种了。
> 
> 
> --
> I like python!
> My Donews Blog: http://www.donews.net/limodou
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 

谢谢limodou的回答。

但是,在我的机器上sys.getfilesystemencoding()返回的是mbcs,
locale.getdefaultlocale()返回的是('zh_CN', 'cp936')

mbcs还好,可是,zh_CN根本就是一个不存在的编码我用encode("zh_CN")出错:unknown encoding: zh_CN
返回数据不可靠嘛,还是不能通用啊,这可怎么办啊?

-- 
Best Regards,
Leo Jay

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

2005年09月12日 星期一 22:25

limodou limodou at gmail.com
Mon Sep 12 22:25:10 HKT 2005

在 05-9-12,Leo Jay<python.leojay at gmail.com> 写道:
> On 9/12/05, limodou <limodou at gmail.com> wrote:
> > 可以使用locale.getdefaultlocale()得到系统的语言及编码。但有时在某些系统会返回为空,这时还可以试着使用sys.getfilesystemencoding()来试,再不行就只能缺省指定一种了。
> >

你应该看一看文档,zh_CN是语言种类,不是编码,而cp936才是语言的编码。关于cp936为什么会有,可以查一查我以前写过的一篇blog。它是windows平台才有的。如果想了解自已去找吧。

-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou

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

2005年09月13日 星期二 11:10

Wang Kebo mep_ at 163.com
Tue Sep 13 11:10:58 HKT 2005

Hi,all
	最近使用Tor和Privoxy,经常在使用代理和不使用代理之间手工切换,破感不
便。
我记得以前使用Google Accelerator的时候,启动Google Accelerator,则IE自动的使
用代理;
当Google Accelerator关闭的时候,IE自动的采用直连。我映像里好像Google
Accelerator
有IE的Automatic Configuration Script来控制这个,但我对Automatic
Configuration Script一无所知,
理论上,应该可以使用Python达到如下的目的:
Python脚本运行时,自动启动Tor和Privoxy,并设置IE自动使用代理;
当该Python脚本退出时,设置IE使用直连。

Any hints?

__
Best Regards,
 
Kebo Wang

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号