`
prowl
  • 浏览: 80887 次
  • 性别: Icon_minigender_1
  • 来自: 艾泽拉斯
社区版块
存档分类
最新评论

解决jsp页面中文乱码问题

    博客分类:
  • j2ee
阅读更多
首先要搞清出现乱码的原因

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页面中文乱码问题 #### 一、问题背景 在使用JSP(Java Server Pages)技术开发Web应用程序的过程中,经常会遇到中文乱码的问题。特别是在接收表单提交的数据或者显示数据库查询结果时,中文字符可能会...

    JSP页面中文乱码几个解决办法

    总结来说,解决JSP页面中文乱码问题的关键在于保持字符编码的一致性,从编辑器保存文件的编码、JSP页面的编码声明、Servlet的响应编码、POST请求的参数编码,到服务器处理GET请求的编码,都需要进行适配和统一。...

    如何解决JSP页面显示乱码问题

    ### 如何解决JSP页面显示乱码问题 在JSP(Java Server Pages)开发中,中文乱码问题一直是开发者常见的挑战之一。这类问题通常源于不同的编码格式不一致导致的字符集冲突。本文将针对JSP页面显示乱码、表单提交中文...

    解决JSP中文乱码问题

    解决 JSP 中文乱码问题 解决 JSP 中文乱码问题是一个很常见...解决 JSP 中文乱码问题需要从多方面入手,包括在 JSP 文件中指定编码方式,在 Java 文件中指定编码方式,在页面中指定编码方式,并确保编码方式的一致性。

    JSP中文乱码问题解决办法

    JSP 中文乱码问题解决办法 JSP 页面中中文乱码问题是指在 JSP 页面中使用中文时,页面显示...解决 JSP 中文乱码问题需要从多方面入手,包括设置页面的字符编码、使用 POST 方式提交表单、使用 GET 方式提交表单等。

    jsp页面显示中文乱码解决.rar

    综上所述,解决JSP页面中文乱码问题需要从多个层面考虑,包括HTTP头部、页面编码、服务器配置以及开发工具设置等。通过全面理解和应用这些知识点,开发者可以有效防止和解决这类问题,提升Web应用的用户体验。

    jsp中文乱码问题解决

    对于jsp页面中文乱码问题,可以通过修改jsp页面的编码方式来解决。我们可以在jsp页面的开头添加 ”utf-8” %&gt;指令,以指定jsp页面的编码方式为UTF-8。这将确保jsp页面中的中文字符正确显示。 二、传递参数中文乱码...

    jsp页面传值中文乱码问题处理.docx

    jsp页面传值中文乱码问题处理 在 JSP 页面中传值时,中文字符可能会出现乱码问题,这是由于字符编码不一致所引起的。下面将详细讲解 JSP 中文乱码种类和解决方案。 JSP 文件中文内容显示乱码 在 JSP 文件中,如果...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    总之,解决JavaWeb中的乱码问题需要从多个层面进行考虑:设置过滤器统一请求和响应的编码,确保JSP页面的编码正确,以及在处理文件时注意文件内容的编码。通过这些方式,我们可以有效防止和解决乱码问题,提高应用...

    几种常用解决jsp中文乱码的方案

    一、页面中文乱码的处理 JSP 采用 ISO-8859-1 作为默认的页面字符编码,这是一种定长单字节字符集,适用于拉丁语,但不能识别中文。解决办法是,在网页代码中,加载页面指令 `; charset=gb2312" language="java" %&gt;...

    jsp乱码解决方案 本方案解决了jsp常见的乱码问题

    本文将详细介绍如何有效地解决JSP中的乱码问题,并通过具体的代码示例来展示解决方案。 #### 二、乱码产生的原因 在深入探讨解决方案之前,首先需要了解乱码产生的原因。通常来说,乱码是由于客户端和服务器端之间...

    JSP中文乱码问题解决总结

    通过以上方法,我们可以有效地解决JSP中文乱码问题。在实践中,理解字符集的工作原理,以及其在不同环节中的应用,对于预防和解决乱码问题至关重要。希望这个总结能帮助到大家,减少在查找和调试这类问题上花费的...

    jsp中文乱码问题jsp中文乱码问题详解

    jsp中文乱码问题的出现是由于编码格式不一致所导致的,可以通过确保jsp文件的存储格式、解码格式和控制浏览器的解码方式一致来解决乱码问题。同时,在使用Post和Get方式提交表单时,需要指定提交的编码格式,以避免...

    JSP解决中文乱码的办法

    以下是一些解决JSP页面中文乱码问题的有效方法: 1. **更改Tomcat配置** - 在Tomcat的`conf/server.xml`文件中,找到`&lt;Connector&gt;`标签,添加`URIEncoding="GBK"`属性。例如: ``` ``` - 这样设置后,Tomcat...

    Servlet及jsp解决中文乱码问题

    ### Servlet及JSP解决中文乱码问题 #### 一、引言 在Web开发中,中文乱码问题一直是困扰开发者的一大难题。特别是在使用Java技术栈(如Servlet与JSP)进行开发时,如果处理不当,很容易出现中文字符显示乱码的情况...

    JSP页面传参出现中文乱码的解决方案

    通过以上步骤,大部分情况下都可以解决JSP页面传参出现中文乱码的问题。然而,Web开发中的字符编码问题复杂多变,可能还需要根据具体环境和项目需求进行调试和调整。总之,理解和掌握字符编码原理,保持一致性是解决...

    Struts2资源文件在jsp页面中显示乱码解决

    当Struts2应用在JSP页面中尝试加载并显示这些文本时,可能会遇到乱码问题,尤其是在处理中文等非英文字符时更为常见。 乱码问题的根源在于字符编码的不匹配。当资源文件的编码格式与JSP页面或服务器解析时所使用的...

    如何解决MySql-JSP中文乱码问题

    在开发Web应用时,尤其是使用Java技术栈如JSP、Servlet与MySQL数据库交互时,中文乱码问题常常困扰着开发者。这个问题的出现主要是由于字符编码不一致导致的,包括数据库编码、连接编码、页面编码等多个环节。下面...

Global site tag (gtag.js) - Google Analytics