`

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介绍2

    讲解了Jython中的文件读写机制,包括打开、读取、写入和关闭文件的步骤,以及如何处理不同的文件类型和编码。 ### 7. 创建Swing GUI #### 7.1 GUI开发 最后,文章演示了如何使用Swing组件在Jython中创建基本的...

    Charset_encoding-Burp:利用字符集编码绕过waf的burpsuite插件

    BurpSuite Plugin通过字符集编码绕过waf的burp插件因为小伙伴在实战中有这么个需求(利用字符集编码绕过waf),所以我借着他的这个需求也学习了下burp插件的编写。预览ASP.NET+IIS使用说明其实这种方法很早就出来了...

    json和jython

    Jython提供了内置的json模块,该模块允许我们轻松地对JSON数据进行编码和解码。例如,我们可以使用`json.dumps()`将Python对象转换为JSON字符串,而`json.loads()`则可以将JSON字符串解析为Python对象。 下面是一个...

    jython处理xml

    例如,你可以生成一系列素数,然后使用Jython将这些数据编码为XML: ```python def is_prime(n): if n return False for i in range(2, int(n**0.5) + 1): if n % i == 0: return False return True def ...

    Python字符串常用方法汇总.docx

    原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 >>> print r'\n' \n >>> print R'\n' \n 格式字符串 Python 字符串格式化符号: | 符号 | 描述 | | -...

    python编码规范

    - 在考虑不同Python实现(如CPython与Jython)的性能差异时,推荐使用`.join()`而不是简单的字符串连接。 **2. 使用`is`和`is not`** - 尽量使用`is`和`is not`代替`==`,例如`if x is not None`。 **3. 异常处理*...

    PEP8Python编码规范.pdf

    PEP8 规定编码中考虑到其他 Python 实现的效率等问题,例如运算符 '+' 在 CPython(Python)中效率很高,在 Jython 中却非常低,所以应该采用 .join() 的方式。尽可能使用 'is' 'is not' 取代 '==',例如 if x is ...

    Python3 基础教程【完整版】

    - **字符串和编码**:深入探讨Python中字符串的表示方式、操作方法以及字符串编码的概念,尤其是Unicode编码的使用。 - **使用list和tuple**:介绍列表(list)和元组(tuple)这两种常用的数据结构,包括它们的区别、...

    python3_9_5_doc.zip

    - 调试工具:pdb(Python Debugger)是内置的调试器,可以帮助定位和修复代码问题。 8. **性能和优化**: - 使用列表推导式和生成器表达式提高代码效率。 - 使用 `timeit` 模块来度量代码执行时间。 - 了解 ...

    Python3基础(1)Python介绍、Python2与Python3、变量、用户输入、 .pdf

    Python3相较于Python2,有许多改进和不兼容之处,例如库名的变化、print函数的使用以及字符编码的处理。 Python3 的一个显著特点是动态解释性,这意味着它的代码在运行时被逐行解释,而不是一次性编译成机器代码。...

    FreeMarker Manual.pdf

    - **字符集问题:** 解决不同字符集之间的转换问题。 - **多线程支持:** 优化性能,允许多个线程并发处理模板。 - **Bean 包装器:** 为 Java Beans 提供更灵活的访问机制。 - **日志记录:** 记录 FreeMarker 的...

    Thinking in Patterns _ Problem Solving Techniques using Java.

    - 强调了在编码之前先编写测试的重要性。 - **简单的测试框架 (A Very Simple Framework)** - 提供了一个基础的单元测试框架示例。 - **编写测试 (Writing Tests)** - 如何有效地编写测试用例以覆盖各种情况。 - ...

    Python3-廖雪峰[带标签完整版]

    - **编码介绍**:Python 支持 Unicode 编码,默认字符串为 Unicode 字符串。 - **操作**:可以对字符串进行各种操作,如拼接、分割、替换等。 - **使用 list 和 tuple** - **区别**:列表是可变的,而元组是不可...

    Python 3.9.1 语言参考.pdf

    - **编码声明**:在文件开头可以使用`# -*- coding: encoding -*-`来指定文件的字符编码。 - **显式行拼接**:通过`\\`在行尾进行行拼接。 - **隐式行拼接**:在行尾的括号、方括号或大括号内,行末的`\n`不会导致...

Global site tag (gtag.js) - Google Analytics