也许是因为比较新或者应用范围有限,网上关于jython+modjy的资料实在少的很。再加上google appengine这个比较特殊的平台,甭说例子了,连点有用的文章都没有。我最近在GAE上用jython+modjy做了个小玩意,折腾了好几天,写这篇文章总结一下开发过程中遇到了几个小问题
1,在每个程序的第一行声明源文件的编码格式
不管是Jython还是Python,如果不做这个声明,不管你是否将文件存为了UTF-8格式或者其他什么格式,源文件将以默认的ASCII编码格式进行处理。这也是一些中文乱码出现的原因,所以,指定编码格式是个好习惯!以下这两种种方式都是正确的:
# coding=utf-8 # -*- coding: latin-1 -*-
更多格式可参考:http://www.python.org/dev/peps/pep-0263/
2,Unicode对象
与Python一样,在Jython内部是用Unicode来处理字符串的。经Jython做过处理的字符串,最终显示时均需要用unicode对象的encode()方法转换成相应编码方式进行显示,未进行操作过的硬编码除外。代码片段如下:
bs=”红梅”+”红河” <==此时经过“+”操作,bs为unicode对象。
bs.encode(‘utf-8’) <==解码后可以utf-8编码方式显示。
3,获得get/post数据的方式
除了在jython内调用JAVA类的方式之外,可以用以下方法获得:
post = environ[‘j2ee.request’]
bs = post.getParameterValues(‘atom’)[0]
其中环境变量environ[‘j2ee.request’],其实是一个 org.mortbay.jetty.Request 对象
应该还有其他更简单的方式,不过我没找到。
我用modjy的modjy_webapp例子来测试,按你的方法尝试中文问题,程序还是抛错。怎样能联系到你?