2005年09月12日 星期一 19:34
在处理中文的时候碰到一些很麻烦的事。如下程序: # 打开文件对话框 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
2005年09月12日 星期一 20:52
在 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
2005年09月12日 星期一 22:14
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
2005年09月12日 星期一 22:25
在 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
2005年09月13日 星期二 11:10
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
Zeuux © 2025
京ICP备05028076号