Python论坛  - 讨论区

标题:[python-chinese] 又是 Python 字符编码问题…… 怪事(wxPython)

2005年12月01日 星期四 17:38

ONE_Fox onefox.fox at gmail.com
Thu Dec 1 17:38:42 HKT 2005

文件编码 # -*- coding: GBK -*-

self.rcvAccName = wx.TextCtrl(billPanel, -1, "")

self.rcvAccName.GetValue()

--------------------------------------------------------------------

当输入框内容是中文的时候就报错:

    print self.rcvAccName.GetValue()
UnicodeEncodeError: 'ascii' codec can't encode characters in position 4-5:
ordinal not in range(128)

英文没有问题。 用 GetString() 也一样
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051201/0f0ac532/attachment.htm

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

2005年12月01日 星期四 18:43

Qiangning Hong hongqn at gmail.com
Thu Dec 1 18:43:58 HKT 2005

ONE_Fox wrote:
> 文件编码 # -*- coding: GBK -*-
>  
> self.rcvAccName = wx.TextCtrl(billPanel, -1, "")
>  
> self.rcvAccName.GetValue()
>  
> --------------------------------------------------------------------
>  
> 当输入框内容是中文的时候就报错:
>  
>     print self.rcvAccName.GetValue()
> UnicodeEncodeError: 'ascii' codec can't encode characters in position
> 4-5: ordinal not in range(128)
>  
> 英文没有问题。 用 GetString() 也一样

wx.TextCtrl.GetValue()返回的是unicode对象(假设你用的unicode版
wxPython),而print一个unicode对象是隐含编码转换的,你的默认编码ascii无
法表示汉字,因此报错。

假设你的终端字符集为GB18030,你应该这样写:
print self.rcvAccName.GetValue().encode('GB18030')


-- 
Qiangning Hong, Registered Linux User #396996
My Blog: http://www.hn.org/hongqn
RSS: http://feeds.feedburner.com/hongqn



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

2005年12月01日 星期四 19:23

ONE_Fox onefox.fox at gmail.com
Thu Dec 1 19:23:01 HKT 2005

print self.rcvAccName.GetValue().encode('GBK')

这样处理过的确 OK 了, 但是类似这种操作应该是十分频繁的

如果每次都要这样转换岂不是很郁闷……

不知道老大有没有一劳永逸的妙方?!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051201/7b76d8a5/attachment-0001.htm

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

2005年12月01日 星期四 20:27

Qiangning Hong hongqn at gmail.com
Thu Dec 1 20:27:19 HKT 2005

ONE_Fox wrote:
> print self.rcvAccName.GetValue().encode('GBK')
>  
> 这样处理过的确 OK 了, 但是类似这种操作应该是十分频繁的
> 
> 如果每次都要这样转换岂不是很郁闷……
>  
> 不知道老大有没有一劳永逸的妙方?!

修改$PYTHONHOME/sitecustomize.py,使用sys.setdefaultencoding()修改你的默
认编码。

-- 
Qiangning Hong, Registered Linux User #396996
My Blog: http://www.hn.org/hongqn
RSS: http://feeds.feedburner.com/hongqn



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

2005年12月01日 星期四 21:10

limodou limodou at gmail.com
Thu Dec 1 21:10:59 HKT 2005

在 05-12-1,ONE_Fox<onefox.fox at gmail.com> 写道:
> print self.rcvAccName.GetValue().encode('GBK')
>
> 这样处理过的确 OK 了, 但是类似这种操作应该是十分频繁的
>
> 如果每次都要这样转换岂不是很郁闷……
>
> 不知道老大有没有一劳永逸的妙方?!
>

写这些东西的情况多吗?

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

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

2005年12月01日 星期四 21:42

ONE_Fox onefox.fox at gmail.com
Thu Dec 1 21:42:36 HKT 2005

修改系统文件了? 那我发布作品的时候难道也要求别人修改??

另外,默认编码设成哪种好点??  呵呵


在05-12-1,Qiangning Hong <hongqn at gmail.com> 写道:
>
> ONE_Fox wrote:
> 修改$PYTHONHOME/sitecustomize.py,使用sys.setdefaultencoding()修改你的默
> 认编码。
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051201/d962170e/attachment.html

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

2005年12月01日 星期四 21:49

ygao ygao2004 at gmail.com
Thu Dec 1 21:49:46 HKT 2005

这种情况下,看看下面的方法是否可行:
import sys
reload(sys)
sys.setdefaultencoding("gb2312")

On 12/1/05, ONE_Fox <onefox.fox at gmail.com> wrote:
> 修改系统文件了? 那我发布作品的时候难道也要求别人修改??
>
> 另外,默认编码设成哪种好点??  呵呵
>
>
> 在05-12-1,Qiangning Hong <hongqn at gmail.com> 写道:
> > ONE_Fox wrote:
> >
> 修改$PYTHONHOME/sitecustomize.py,使用sys.setdefaultencoding()修改你的默
> > 认编码。
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>


--
■■■■■■■■■■■■■■■■■■■■■
Myblog: http://blog.donews.com/ygao/
http://groups.google.com/group/python_study
■■■■■■■■■■■■■■■■■■■■■

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

2005年12月01日 星期四 21:55

Qiangning Hong hongqn at gmail.com
Thu Dec 1 21:55:05 HKT 2005

ONE_Fox wrote:
> 在05-12-1,*Qiangning Hong* <hongqn at gmail.com hongqn at gmail.com>>
> 写道:
> 
>     ONE_Fox wrote:
>     修改$PYTHONHOME/sitecustomize.py,使用sys.setdefaultencoding()修改你的默
>     认编码。
>
> 修改系统文件了? 那我发布作品的时候难道也要求别人修改??

如果不要求别人改,那你就得在代码里帮别人改好。鱼&熊掌

> 另外,默认编码设成哪种好点??  呵呵

和你的console编码一致就可以了。

-- 
Qiangning Hong, Registered Linux User #396996
My Blog: http://www.hn.org/hongqn
RSS: http://feeds.feedburner.com/hongqn



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

2005年12月01日 星期四 21:57

limodou limodou at gmail.com
Thu Dec 1 21:57:27 HKT 2005

2005/12/1, ygao <ygao2004 at gmail.com>:
> 这种情况下,看看下面的方法是否可行:
> import sys
> reload(sys)
> sys.setdefaultencoding("gb2312")
>

这个办法可行。

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

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

2005年12月01日 星期四 22:15

ONE_Fox onefox.fox at gmail.com
Thu Dec 1 22:15:37 HKT 2005

我经常用的是 GBK , GB2312 字符集抬小,偶尔会出问题

比如一些标点符号
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20051201/216bcf75/attachment.html

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号