关于处理JSP和javabean之间的中文问题
来源:互联网 发布:望远镜放大倍数 知乎 编辑:程序博客网 时间:2024/05/19 23:15
在很多的时候,我们都会碰到同一个问题,在JSP页面显示好好的中文,传到后台的JavaBean里就变成乱码了,有的朋友喜欢写一个编码的转换方式,来实现编码的转换,其实有的时候这样会变得非常麻烦,并且会增加不必要的操作.
我们可是好好的想一想,为什么在JSP页面显示好好的中文一传到后台就会问题,其实有的时候,问题是出在TOMCAT的身上.
用get方法传递的时候,这个方法你加过滤器和在页面上指定编码都是不可用的,你如果在服务器的server.xml里如果没有配置这一项的时候,采用Get提交的时候,服务器就会默认的是服务器内部的ISO-8859-1的编码.
现在知道为什么会出问题了吧,那让我们做个小小的改动,就会解决让你头疼的中文处理问题:
打开tomcat的server.xml文件,找到区块,加入如下一行URIEncoding="GBK",具体的代码如下:
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
下面是一个同事写的一个帖子,相当不错
在用采用tomcat+struts+mysql做网页应用程序,是目前非常流行的方式,但经常出现中文乱码的问题,让人十分头疼,以下是总结WEB应用程序的中文乱码解决方法
用post方式传递中文参数
在Jsp页面里加上如下声明:
<%@ page contentType="text/html;charset=utf-8" language="java" %>
表明该文件是用utf-8编码。另外该JSP也必须用utf-8编码编辑。在Eclipse里要修改编辑框的编码格式,Windows->preferences->workbench->Editors 然后修改Text file encoding即可。如果Jsp的页面已经写完了,却不知如何修改编码,可用window自带的文本编辑器打开该Jsp页面,然后另存同名文件,注意,在文件名的下面可以选择UTF-8编码方式的。
这个可以。其他的编辑器如UltraEdit都有UTF-8编码方式。
用get方式传递中文参数
应避免使用这种方式,如不可避免,则需要修改WEB服务器配置,下面以tomcat5.0.28为例:
修改tomcat的Conf目录下的server.xml
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"/>
黑体部分是另增的:表明URL用UTF-8编码。
WEB服务器的编码问题
由于tomcat服务器内核是采用iso-8859-1编码,如果是用utf-8传递过来的参数处理会出错,需要增加一个filter。这个代码在tomcat自带的例子有:
把这个类拷到你所在的类路径:
%tomcat_home/webapps/jsp-examples/WEB-INF/classes/filters/ SetCharacterEncodingFilter.class
在web.xml文件里增加如下代码段:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
代码中含有中文
应尽量避免在代码中出现中文,如不可避免。解决方法有两种:
1.在Utf-8编码方式下编写代码,如果是用Ant编绎的话,在Javac的参数里加上encoding=utf-8.
2.另一种解决方法是采用转义字符,把程序中出现的中文采用转义字符表示。JDK应自带一个这样的工具:native2ascii.exe
我一般采用第一种方法。
数据库端
在数据库建表的时候要指示采用utf-8,或且把数据库默认编码改为utf-8.然后数据库的连接字符串要指示用utf-8格式编码。
例:mysql:
hibernate.connection.url jdbc:mysql://192.168.16.24:3306/berheleyoa?useUnicode=true&characterEncoding=utf-8
(注意:如果这个字符串是写XML的文件的话,由于XML中&是特殊字符,所以应该用转义字符:jdbc:mysql://192.168.16.24:3306/berheleyoa?useUnicode=true&characterEncoding=utf-8 )
总结
采用以上方法解决了从数据端到前面显示的编码问题。注意在代码不再需要再处理编码问题。特别注意慎用:getBytes(String str,String Encode)函数。
- 关于处理JSP和javabean之间的中文问题
- JAVABEAN、JSP中文问题
- 深入剖析关于JSP和Servlet对中文的处理
- 深入剖析关于JSP和Servlet对中文的处理
- jsp之间中文传值的问题,中文URL传值时的处理
- 关于servlet 和 JSP 中文乱码的问题
- 解决Extjs传参到action中文乱码和jsp之间传值的中文乱码问题
- jsp+servlet+javabean中关于图片上传的问题
- JSP中文处理问题
- JSP中文处理问题
- JSP 中文乱码问题的处理解决方案
- Jsp与javabean之间的关系
- JSP,js,servlet之间传值时中文乱码的处理
- JSP,js,servlet之间传值时中文乱码的处理
- jsp、java程序和数据库之间中文乱码问题
- 关于jsp中文乱码的问题
- 关于JSP中文问题的解决方法
- 关于JSP页面中文乱码的问题
- GBK和gb2312的区别
- Oracle分页查询语句
- 修改本地硬盘分区图标
- 用3种方法检测远程URL是否存在
- Ubuntu 安装gcc
- 关于处理JSP和javabean之间的中文问题
- 解决右键弹出菜单慢的问题
- 用spring controller显示图形
- 用mule实现对远端ftp目录的监听
- 为什么选择Flex而不选择Ajax-Newbie asks why Flex
- 四个有用的过虑器
- 数据库存储过程总结
- GRID新手入门
- Could not find datasource(在配jbpm工程中出现的)