com.caucho.jsp.JspParseException: illegal utf8 encoding at 0x 解决方法

来源:互联网 发布:淘宝助理5.7.8.1 编辑:程序博客网 时间:2024/05/29 14:14

最近在XP下使用MyEclipse软件开发了一个web程序,不是到linux上的resin 3.0服务器上,总是莫名其妙的出现com.caucho.jsp.JspParseException: illegal utf8 encoding at 问题,一开始以为是文件编码问题,将文件都设置为UTF-8,GBK之类的都没有解决。后来发现和linux下的环境变量有关系,下面这篇文章介绍的比较详细。修改后记得重启resin。


来自: http://181054867.iteye.com/blog/531000

使用resin-3.1.1作为服务器,在jsp里如下的代码:
int test;
out.println("test value is : " + test);
resin出现的异常是:
com.caucho.jsp.JspParseException: illegal utf8 encoding at 0xfd
不是:
com.caucho.jsp.JspParseException: /index.jsp:12: variable test might not have been initialized
        out.println("test value is : " + test);
这样的异常

经过反复研究,发现是操作系统的问题,我分别在本机测试(我使用ubuntu开发),ubuntu的时区是香港(en_HK),
而服务器上的时区是中国大陆(zh_CN),处理方法如下:


首先,使用locale命令查看当前服务器设置地域,我出来的结果是:
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=
表明使用的是中国地区
使用export LANG=en_US.UTF-8命令修改为英文美国地区。
再用locale查看是否已修改成功,我出来的结果是:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
修改成功了(可以使用vi查看,修改后,vi的一些提示是否变成英文了)

使用vi /etc/sysconfig/i18n修改这个文件(记得先备份,这步不知是否必须,但最好修改吧):
我的i18n内容是:
LANG="zh_CN.UTF-8"

修改为:
LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"

最后,使用locale确定修改成功

重启resin再测试,异常正确了,激动万分。。
呵呵,希望能帮到您!

0 0