首先要搞清出现乱码的原因
1.当为post请求的时候,可理解为发数据包,根据页面jsp的设置来进行编码。jsp默认编码是
ISO-8859-1。
<%@ page pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
同时,可自定义过滤器。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 设置请求响应字符编码
request.setCharacterEncoding(charset);
response.setCharacterEncoding(charset);
HttpServletRequest req = (HttpServletRequest) request;
// 执行下一个过滤器(如果有的话,否则执行目标servlet)
chain.doFilter(req, response);
}
同时,将此filter配置到web.xml可解决此问题。
2.如为get请求,类似"?username=测试&password=123",刚才的修改不起作用。
如为tomcat可修改server.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8"
/>
缺点为:如一个tomcat下有多个应用容易发生混淆。
解决方案2:手动写一个GetHttpServletRequestWrapper。
public class GetHttpServletRequestWrapper extends HttpServletRequestWrapper {
private String charset = "UTF-8";
public GetHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
}
/**
* 获得被装饰对象的引用和采用的字符编码
* @param request
* @param charset
*/
public GetHttpServletRequestWrapper(HttpServletRequest request,
String charset) {
super(request);
this.charset = charset;
}
/**
* 实际上就是调用被包装的请求对象的getParameter方法获得参数,然后再进行编码转换
*/
public String getParameter(String name) {
String value = super.getParameter(name);
value = value == null ? null : convert(value);
return value;
}
public String convert(String target) {
System.out.println("编码转换之前:" + target);
try {
return new String(target.trim().getBytes("ISO-8859-1"), charset);//此处ISO-8859-1为jsp默认编码
} catch (UnsupportedEncodingException e) {
return target;
}
}
}
在刚才filter中加上如下代码
if (req.getMethod().equalsIgnoreCase("get")) {
req = new GetHttpServletRequestWrapper(req, charset);
}
以上文字部分代码转自whistler文章
分享到:
相关推荐
### 解决JSP页面中文乱码问题 #### 一、问题背景 在使用JSP(Java Server Pages)技术开发Web应用程序的过程中,经常会遇到中文乱码的问题。特别是在接收表单提交的数据或者显示数据库查询结果时,中文字符可能会...
总结来说,解决JSP页面中文乱码问题的关键在于保持字符编码的一致性,从编辑器保存文件的编码、JSP页面的编码声明、Servlet的响应编码、POST请求的参数编码,到服务器处理GET请求的编码,都需要进行适配和统一。...
### 如何解决JSP页面显示乱码问题 在JSP(Java Server Pages)开发中,中文乱码问题一直是开发者常见的挑战之一。这类问题通常源于不同的编码格式不一致导致的字符集冲突。本文将针对JSP页面显示乱码、表单提交中文...
解决 JSP 中文乱码问题 解决 JSP 中文乱码问题是一个很常见...解决 JSP 中文乱码问题需要从多方面入手,包括在 JSP 文件中指定编码方式,在 Java 文件中指定编码方式,在页面中指定编码方式,并确保编码方式的一致性。
JSP 中文乱码问题解决办法 JSP 页面中中文乱码问题是指在 JSP 页面中使用中文时,页面显示...解决 JSP 中文乱码问题需要从多方面入手,包括设置页面的字符编码、使用 POST 方式提交表单、使用 GET 方式提交表单等。
综上所述,解决JSP页面中文乱码问题需要从多个层面考虑,包括HTTP头部、页面编码、服务器配置以及开发工具设置等。通过全面理解和应用这些知识点,开发者可以有效防止和解决这类问题,提升Web应用的用户体验。
对于jsp页面中文乱码问题,可以通过修改jsp页面的编码方式来解决。我们可以在jsp页面的开头添加 ”utf-8” %>指令,以指定jsp页面的编码方式为UTF-8。这将确保jsp页面中的中文字符正确显示。 二、传递参数中文乱码...
jsp页面传值中文乱码问题处理 在 JSP 页面中传值时,中文字符可能会出现乱码问题,这是由于字符编码不一致所引起的。下面将详细讲解 JSP 中文乱码种类和解决方案。 JSP 文件中文内容显示乱码 在 JSP 文件中,如果...
总之,解决JavaWeb中的乱码问题需要从多个层面进行考虑:设置过滤器统一请求和响应的编码,确保JSP页面的编码正确,以及在处理文件时注意文件内容的编码。通过这些方式,我们可以有效防止和解决乱码问题,提高应用...
一、页面中文乱码的处理 JSP 采用 ISO-8859-1 作为默认的页面字符编码,这是一种定长单字节字符集,适用于拉丁语,但不能识别中文。解决办法是,在网页代码中,加载页面指令 `; charset=gb2312" language="java" %>...
本文将详细介绍如何有效地解决JSP中的乱码问题,并通过具体的代码示例来展示解决方案。 #### 二、乱码产生的原因 在深入探讨解决方案之前,首先需要了解乱码产生的原因。通常来说,乱码是由于客户端和服务器端之间...
通过以上方法,我们可以有效地解决JSP中文乱码问题。在实践中,理解字符集的工作原理,以及其在不同环节中的应用,对于预防和解决乱码问题至关重要。希望这个总结能帮助到大家,减少在查找和调试这类问题上花费的...
jsp中文乱码问题的出现是由于编码格式不一致所导致的,可以通过确保jsp文件的存储格式、解码格式和控制浏览器的解码方式一致来解决乱码问题。同时,在使用Post和Get方式提交表单时,需要指定提交的编码格式,以避免...
以下是一些解决JSP页面中文乱码问题的有效方法: 1. **更改Tomcat配置** - 在Tomcat的`conf/server.xml`文件中,找到`<Connector>`标签,添加`URIEncoding="GBK"`属性。例如: ``` ``` - 这样设置后,Tomcat...
### Servlet及JSP解决中文乱码问题 #### 一、引言 在Web开发中,中文乱码问题一直是困扰开发者的一大难题。特别是在使用Java技术栈(如Servlet与JSP)进行开发时,如果处理不当,很容易出现中文字符显示乱码的情况...
通过以上步骤,大部分情况下都可以解决JSP页面传参出现中文乱码的问题。然而,Web开发中的字符编码问题复杂多变,可能还需要根据具体环境和项目需求进行调试和调整。总之,理解和掌握字符编码原理,保持一致性是解决...
当Struts2应用在JSP页面中尝试加载并显示这些文本时,可能会遇到乱码问题,尤其是在处理中文等非英文字符时更为常见。 乱码问题的根源在于字符编码的不匹配。当资源文件的编码格式与JSP页面或服务器解析时所使用的...
在开发Web应用时,尤其是使用Java技术栈如JSP、Servlet与MySQL数据库交互时,中文乱码问题常常困扰着开发者。这个问题的出现主要是由于字符编码不一致导致的,包括数据库编码、连接编码、页面编码等多个环节。下面...