Jython小问题-字符编码

WebLogic/WebSphere监控中常用到Jython,就想下一个学学,听说简单易用,结果刚开头就碰到问题了。具体见下:

E:\TEMP>jython -i
Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06)
[IBM J9 VM (IBM Corporation)] on java1.6.0
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hello"
...
...
LookupError: unknown encoding 'ms936'
 
E:\TEMP>jython -i
Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06)
[IBM J9 VM (IBM Corporation)] on java1.6.0
Type "help", "copyright", "credits" or "license" for more information.
>>> if 1:
LookupError: unknown encoding 'ms936'

 两条很简单的命令:print没有正常返回;if命令直接出错退出Jython提示符了,怀疑Jython安装有问题。问问有经验的人,原来是本机字符和安装程序字符不一致导致。自学技术最怕这种属于知不知道范畴的东东了,瞎捉摸瞎搜索,最费时间了。先说解决方法吧:

E:\TEMP>chcp 437
 
Active code page: 437
 
E:\TEMP>jython -i
Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06)
[IBM J9 VM (IBM Corporation)] on java1.6.0
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hello"
hello
>>> quit()

 延伸阅读:

what-encoding-code-page-is-cmd-exe-using

修改windows的CMD窗口输出编码格式为UTF-8

 

错误1:LookupError: unknown encoding 'gbk'
现象:一条简单的print没有正常返回,报上述错误,原来是本机字符和安装程序字符不一致导致。
解决:
>>> #_*_ coding: cp850
在jython2.5.3\registry 文件中,有这种配置,取消注释,就是设置控制台编码
# Setting this to a valid codec name will cause the console to use a different encoding when reading commands from the console.
#python.console.encoding = cp850
扩展:获取当前系统支持的编码列表
>>> import encodings
>>> encodings.aliases.aliases  列出所有支持编码集合
>>> for key in encodings.aliases.aliases.keys(): print "%-25s%-25s"%(key,encodings.aliases.aliases[key]) 分两
其中有这么几条:
936                      gbk
utf8                     utf_8
850                      cp850
 
 http://bbs.csdn.net/topics/390035497
 
#!/usr/bin/env python 
# -*- coding: gbk -*-
提示错误:LookupError: unknown encoding 'gbk'
python是可以的,但是jython提示错误,这如何解决gbk 问题呢?
 
在网上搜搜,两三年前就有人问这个问题了,从没有人回答.

从代码看,jython的gbk.py是从cpython拿来的,但它用到了一个c模块_codec_cn,在jython中没有相应的实现,所以jython中加载gbk.py会出错,导致lookup error.

用utf-8吧.
 

你可能感兴趣的:(jython)