字符集系列一之痛苦的resin
来源:互联网 发布:php伪造referer跳转 编辑:程序博客网 时间:2024/06/10 13:06
本机环境:windows2000 professional 简体中文版
服务器环境:Linux BSD 2.4.26
resin运行系统变量:LANG:zh_CN,LC_ALL:空
一个字符集的问题,折磨了我大半天,终于找到了原因,发给大家,遇到了就不要再这么痛苦了。
这是一个特别简单的例子,我们在HttpRequest中有一个字“碁”,比较特殊,存盘后成为“?”。这个字在GBK中存在,在gb2312字符集中不存在。
servlet中是这么处理的:
chineseName=upLoadRequest.getParameter("cname");
非常标准的用法,在本机环境中测试正常,放到服务器上存盘乱码。
其形成原因有两点:
1、服务器上的字符集为gb2312,不支持此字。
2、resin的httpRequest实现与其他服务器不同.
大多服务器的请求流都是以"ISO8895-1"字符集为默认实现,此时标准正确的处理方法为:
chineseName=upLoadRequest.getParameter("cname");
chineseName=StringUtil.iso2gbk(chineseName);
但是在resin中,由于httpRequest.getParameter对象返回的是本地默认编码的字符串,服务器上也就是gb2312,导致出现乱码现象,而windows中文版下就是GBK,所以正常。
这是从现象中总结出来的,与网上说的resin的情况不是很相符,不知是我的resin版本太老还是理解错误,不过,只需要将linux下的启动环境变量,lang,lc_all改变一下( LANG=zh_CN; LC_ALL=zh_CN.GBK; export LANG LC_ALL 设置),就可以解决问题。
如果哪位知道更加详细准确的关于resin的字符集处理的资料,请务必同志我,不甚感激。
- 字符集系列一之痛苦的resin
- 字符集系列二之resin和tomcat之差异
- JAVA/JSP学习系列之三(Resin+Apache的安装)
- JAVA/JSP学习系列之三(Resin+Apache的安装)
- JAVA/JSP学习系列之三(Resin+Apache的安装)
- 一段痛苦的电子从业之路(一)
- linux的痛苦之旅
- java痛苦学习之路[一] ---@SuppressWarnings
- 字符集系列之四总结
- MySQL基础之字符集(一)
- [Oracle字符集:] 一. Oracle字符集的基本知识
- JAVA/JSP学习系列之Resin+Apache安装
- linux 上的xml痛苦之处
- 修复bug的痛苦之旅
- 字符集和字符集编码杂谈系列之我见
- 字符集系列三之ISO8859_1、GBK、gb2312
- 字符集系列三之ISO8859_1、GBK、gb2312
- 字符集系列三之ISO8859_1、GBK、gb2312
- 理解synchronized(Object)锁
- 青椒炒肉
- 利用RSS进行项目沟通
- 单例模式与多线程的关系
- 带创建参数的匿名内部类
- 字符集系列一之痛苦的resin
- 自定义线性表的简单例子
- Eclipse 3 + Lomboz 3 + Tomcat 5 设置(转载)
- 界面设计的基本技巧
- 链表简单例子
- IBM WebSphere 网站专家 安装指南
- java.text和java.util的综合运用
- 字符集系列二之resin和tomcat之差异
- win2000和XP下得到硬盘剩余空间(用java调用windows命令)