经常在论坛中看到朋友遇到中文乱码的问题而不知所措,本人以自己在项目中常遇到的中文乱码问题及解决方法,小结一下,希望能对朋友有所帮助,如有不足,请指正。
总的归纳有以下几个方面:
一、在表单正常提交后,页面显示出乱码。
解决方法:
1、如果是直接jsp页面提交到别外一个jsp页面,或jsp提交到servlet,可以在jsp或serlet的doPost()或doGet()方法设置编码转换,将请求后的数据转成中文,并在输出时也设置为中文如:
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
2、设置过滤器(推荐方法):
写一个过滤器类,并且建议写在静态类,方便调用,如下:
[java]view plaincopyprint?
/**
* 全局编码过滤器,
*
* @author fafuhefan
*
*/
publicclassEncodingFilterimplementsFilter {
String encoding ="GBK";
publicvoiddestroy() {
}
publicvoiddoFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throwsIOException, ServletException {
HttpServletRequest request_1 = (HttpServletRequest) request;
HttpServletResponse response_1 = (HttpServletResponse) response;
request_1.setCharacterEncoding(encoding);
response_1.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
publicvoidinit(FilterConfig config)throwsServletException {
String str = config.getInitParameter("encoding");
if(str !=null&& str.length() >0) {
encoding = str;
}
}
}
/**
* 全局编码过滤器,
*
* @author fafuhefan
*
*/
public class EncodingFilter implements Filter {
String encoding = "GBK";
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request_1 = (HttpServletRequest) request;
HttpServletResponse response_1 = (HttpServletResponse) response;
request_1.setCharacterEncoding(encoding);
response_1.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
String str = config.getInitParameter("encoding");
if (str != null && str.length() > 0) {
encoding = str;
}
}
}
并在web.xml作如下配置:
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.crm.filter.EncodingFilter</filter-class>(说明:此为类路径)
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
二、如果为url后在跟的参数为中文,如:xxx.do?name=你好,或采用自动跳转链接时,后面跟的提示信息含有中文。
解决方法:
1、可以写个类,进行转换如:
[java]view plaincopyprint?
/**
* 将编码转成中文编码GBK
* @author fafuhefan
* 返回中文字符串
*/
publicclasstools {
/**
* @param str
* 需要转换的字符串
* @return
* 中文字符串
*/
publicstaticString toGBK(String str) {
try{
str = java.net.URLEncoder.encode(str,"gb2312");
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}
returnstr;
}
}
/**
* 将编码转成中文编码GBK
* @author fafuhefan
* 返回中文字符串
*/
public class tools {
/**
* @param str
* 需要转换的字符串
* @return
* 中文字符串
*/
public static String toGBK(String str) {
try {
str = java.net.URLEncoder.encode(str, "gb2312");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
}
2、在tomcat的server.xml做以下配置:
<Connector port="8099" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/>
三、ajax提交出现在乱码。
解决方法:以上二种方法基本可以解决。
四、文件上传时文件名出现乱码。
解决方法:在上传时,先对文件名进行编码设置,可以采用此方法:
例:paramMap.put(fi.getFieldName(), new String(fi.getString().getBytes("ISO-8859-1"),"GBK"));
五、有时数据库插入数据时出现的乱码:
解决方法:
可以在struts中的Form类中添加个方法就行
public void reset(ActionMapping arg0, HttpServletRequest arg1) {
try{
arg1.setCharacterEncoding("gbk");
}catch(Exception e){
e.printStackTrace();
}
}
分享到:
相关推荐
解决web项目开发中常见的中文乱码问题.pdf
在java Web应用开发中,软件开发人员最容易遇到的问题就是中文的乱码问题,其中最常见的有两种,JSP页面中文显示乱码和表单提交参数中文乱码。本文通过深入分析这两种中文乱码问题产生的原因,分别给出了对应的解决方案...
在进行java Web开发的过程中,由于采用的编码和解码的方式不统一,经常会出现乱码问题。文中首先介绍了java Web的编码机制及JSP运行原理,继而阐述了在开发过程中常见的乱码问题及解决方案,最后提出采用过滤器重写...
在利用JSP/Servlet技术开发java Web应用程序的时候,经常会遇到中文乱码问题,本文首先介绍了Web应用中常见的编码方式,然后分析了J2EE平台下Web应用中文乱码产生的原因,并针对不同情况给出了解决方法。
在java Web应用开发常见的问题中,中文的乱码问题在页面中没有统一的方法解决,造成程序员浪费大量的时间与精力且代码效率不高,因此提出了新的乱码算法,并设计了通用的乱码处理器,提高了程序员的工作效率.
3 get方式传值乱码问题解决 4 查询被锁的数据,解锁 ,数据库连接数 5 下拉框的数据回显 6 mybatis批量更新,批量插入时mapper文件的sql 7 搭建一个项目系统 8 创建一个new工作空间,需要修改的字符编码 9 Java @...
汇总一、网页报‘404’错误二、网页报‘500’错误三、项目中Error Pages错误四、导入的项目出现乱码五、报错 HttpServletRequest 无法解析为类型 或者 The superclass “javax.servlet.http.HttpServlet” was not ...
当我们在学习JSP开发时,中文乱码是个比较常见的问题,其根源是:Web容器默认的字符处理编码是ISO-8859-1。下面我们来详细看看如何去解决这个问题。
.net中中文乱码问题解决.txt ADO.NET 与 XML:双剑合壁,威力强大.doc ASP.NET HTTP 运行时.doc ASP.NET ViewState 初探.doc ASP.NET Web 方法中的 XmlElement 参数的功能.d ASP.NET 中 Cookie 的基本知识....
8.12 向现有Web项目添加Web开发功能 161 8.13高级设置 161 8.13.1修改Web项目的默认设置 161 8.13.2给Web项目加入高级功能 162 8.14 常见问题 163 8.15 小结 163 8.16 参考资料 164 相关网页 164 Tomcat JSP Web ...
中文乱码一直以来是WEB开发中比较常见的问题之一,对于初学者来说,各种各样的编码方式可能会有点不适应,本篇文章并不讲述这些编码,而是把自己遇到的一个小问题以及该问题的解决之法说明一下,希望对大家有用。
关于Ajax的常见面试题 1,Ajax和javascript的区别? javascript是一种在浏览器端执行的脚本语言...在一般的web开发中,javascript是在浏览器端执行的,我们可以用javascript控制浏览器的行为和内容。 Javascript的特性
2.2.6 指点迷津——如何处理中文乱码问题 2.2.7 使用JavaMail发送注册验证邮件 2.2.8 独家见解——在前台还是后台验证 2.2.8 数据有效性 2.3 实现用户登录 2.3.1 创建登录输入表单 2.3.2 验证...
在SQL Server 2005中解决死锁 在 SQL Server 2005 中查询表结构及索引 sql server 2005中的DDL触发器 在 SQL Server 2005 中使用表值函数来实现空间数据库 SQL Server 2005的30个最重要特点 同时安装sql2000和sql...
tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,tomcat ,对JSP开发中容易出现的一些错误的总结,有出现错误的截图以及解决方法,包括了jsp页面的一些常见错误,控制台出现的错误,中文乱码处理、...
jax概述 Ajax的定义 Web应用程序的解决方案 Ajax的工作方式 基于各种Web解决方案的Ajax技术选择路线 Ajax核心技术-XML XML与Ajax ...DWR开发常见问题解决 和现有Web框架Struts的集成 和Hibernate框架的集成