经常在论坛中看到朋友遇到中文乱码的问题而不知所措,本人以自己在项目中常遇到的中文乱码问题及解决方法,小结一下,希望能对朋友有所帮助,如有不足,请指正。
总的归纳有以下几个方面:
一、在表单正常提交后,页面显示出乱码。
解决方法:
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项目时,乱码问题常常困扰着开发者,它涉及到字符编码的处理,这是Web应用中的一个常见但至关重要的问题。本方案提供了一个简洁有效的解决方法,通过一个Java文件和在`web.xml`配置文件中的简单设置,可以...
在Web项目开发中,中文乱码是一个常见的问题,尤其是在处理用户输入、文件读写或者页面显示时。本文将深入探讨如何解决这些问题,帮助开发者更好地处理中文字符。 首先,当表单正常提交后,页面显示出乱码,这通常...
Java Web项目开发中,中文乱码问题是一个常见但棘手的困扰,主要涉及到字符编码和解码的过程。在计算机系统中,数据以二进制形式存储,中文字符需要经过编码转换为字节序列才能存储。编码是将字符转化为字节的过程,...
本文主要讨论了在 Web 开发中遇到的中文乱码问题,并提供了一些解决方案。首先,需要确定中文乱码问题不是由浏览器引起的,然后讨论了 Tomcat 服务器配置和数据库 bean 配置中的一些解决方案。 一、浏览器配置问题 ...
在Java Web开发中,中文乱码问题一直是开发人员面临的常见问题之一。中文乱码通常是由于在字符编码转换过程中,字符集不一致或设置不当所导致。为了解决这一问题,首先需要了解Java Web工程字符编码的基本理论,包括...
在 Java+jsp+mysql 开发 web 项目中,中文乱码问题是一个常见的问题,影响着项目的正常运行。下面我们将从四个方面来解决中文乱码问题: 一、Jsp 输出中文的乱码问题 在 Jsp 页面中,如果不设置 charset,输出中文...
在 Web 开发中,中文乱码问题是一个常见的问题,尤其是在FORM表单传递参数时。这个问题的根本原因是对中文的编码与解码方式不一致。我们可以理解为对中文的加密与解密的密钥不一致。例如,用UTF-8对中文编码而用ISO-...
在Java Web开发中,中文乱码问题是一个常见的困扰,尤其对于使用Servlet和JSP技术的开发者来说。乱码问题的产生主要源于字符编码的不一致性,即在Web组件之间、Web组件与浏览器、以及Web组件与数据库之间的字符集...
Java Web应用开发中,中文乱码问题是一个常见的困扰,尤其对于初学者来说。该问题主要出现在数据的编码、传输和解码过程中,涉及到浏览器、服务器、数据库等多个环节。本文将深入探讨这个问题的原因,并提供针对性的...
在Web开发过程中,中文乱码是一个常见的问题,尤其是在处理HTTP请求和响应时。本文将深入探讨如何使用Java的Filter机制来解决这个问题,提供一个简单可靠的解决方案,并详细解释配置过程。 一、理解Web中文乱码问题...
在 Java Web 技术开发中,中文乱码问题是一个常见的问题,影响了开发者的工作效率和项目的稳定性。本文将深入探讨中文乱码问题的成因、解决方法和预防措施,帮助开发者更好地理解和解决这个问题。 1. 中文乱码问题...
本文将详细探讨Java Web开发中解决中文乱码问题的策略,包括文件编码设置、页面编码控制、请求参数编码转换、过滤器应用以及GET请求特殊处理等。 #### 1. 文件编码设置 在Java Web项目中,确保所有文件(包括Java...
Java Web开发中的中文乱码问题是一个常见的困扰,尤其是在处理用户输入和数据显示时。问题的核心在于不同组件和环境之间编码方式的不一致。本文将深入探讨Java Web的编码机制,JSP运行原理,以及如何解决常见的乱码...
本篇文章将详细介绍在Java Web开发中解决乱码问题的方法。 #### 二、乱码产生的原因 乱码主要由以下几种情况引起: 1. **页面本身的编码与浏览器解析编码不一致**:例如页面实际编码为GBK,但浏览器默认按照ISO-...
"解决中文乱码问题" 标题解释 解决中文乱码问题是指在使用C#语言读取txt文件时,遇到中文乱码的问题。这种问题在实际开发中非常常见,特别...在ASP.NET框架中,C#语言可以用于开发Web应用程序,并解决中文乱码问题。
Java Web程序开发中字符乱码的原因与解决办法 字符乱码问题是Java Web程序开发过程中经常遇到的一个问题,它会对用户界面的友好性以及信息的准确传达造成很大的影响。为了解决这个问题,我们首先要了解字符集和字符...
在web开发过程中,乱码问题是一个常见的困扰,尤其是在处理文本数据时。乱码现象通常发生在字符编码不一致或处理不当的场景下。本篇将详细探讨这个问题,以及如何通过理解和运用正确的字符编码来解决它。 首先,...