这个中文的乱码问题让我忙活了一个下午了,终于有点眉目了,现在把解决办法贴出来,做个记录,也希望能帮助跟我有同样问题的人,hoho。
我的问题:
在一个页面上,填写表单内容,提交采用Ajax实现,并且分别用GET和POST两种方法提交,最后把表单的内容显示到当前页面上。
如:输入姓名(小三),生日(2012年1月1日)。期望结果显示“您好,小三。您的生日是2012年1月1日”。
错误的结果肯定是显示乱码,无论是GET还是POST都是乱码,然后查资料,找解决办法。
看了好多资料,看来这问题大家都遇到过,终于明白了一些字符集的相关问题。
第一种:最基本的乱码问题
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>乱码</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
</head>
<body>
必须的!乱码
</body>
</html>
这个乱码问题是最简单的乱码问题。就是页面编码不一致导致的乱码。
注意这个页面有三个部分涉及到了编码的设定:
第一处的编码格式为jsp文件的存储格式。Ecljpse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。
第二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1,这样的话如有中文肯定出乱码。也就是必须与第一处一致,必须的。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,也会出现乱码。必须一致才可以。
第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式。出现了乱码。
第二种:GET和POST传参时出现乱码。
这个乱码也是tomcat的内部编码格式iso8859-1在捣乱,也就是说post提交时,如果没有设置提交的编码格式,则会以iso8859-1方式进行提交,接受的jsp却以utf-8的方式接受。导致乱码。既然这样的原因,下面有几种解决方式,并比较。
A、GET请求参数处理
String str = new String(request.getParameter("something").getBytes("ISO-8859-1"),"utf-8") ; 这样的话,每一个参数都必须这样进行转码。很麻烦。但确实可以拿到汉字。
B、POST请求参数处理
在处理请求页面上开始处,执行请求的编码代码,request.setCharacterEncoding("UTF-8"),把提交内容的字符集设为UTF-8。使用String str = request.getParameter("something");即可得到汉字参数。但每页都需要执行这句话。
我的情况属于第二种,因为用Ajax提交请求,所以传递的参数都是按照Ajax的标准来编码的。Ajax的post方式,默认使用utf-8的编码提交参数的,所以要把Ajax的Content-Type请求头设置"application/x-www-form-urlencoded;charset="utf-8",以此来通知服务器,客户端发送参数所使用的编码。这样,服务器端可以直接通过String word = request.getParameter("something");来获取经过转码后的参数值,省去了request. setCharacterEncoding。当然,也可以在处理请求的Servlet中的doPost方法中加上request.setCharacterEncoding("UTF-8"),达到的效果是相同的。(经过本人试验过的)
终于解决了,现在开心多了。
分享到:
相关推荐
在使用Ajax进行POST提交时,中文字符可能会遇到乱码问题,这是因为数据在传输过程中编码与解码不匹配导致的。Ajax以UTF-8编码发送数据,但服务器端可能使用了不同的字符集(如GB2312)来解析,这就产生了乱码。本文...
在处理AJAX请求中文乱码问题时,关键是确保客户端与服务器端使用的字符集保持一致。通常情况下,推荐在服务器端设置正确的字符集,并在AJAX请求中显式指定字符集,以避免乱码现象的发生。同时,在开发过程中也需要...
在本文中,我们将深入探讨如何解决使用Ajax进行POST请求时出现的中文乱码问题。首先,我们要理解Ajax中文乱码的根源,它通常涉及到字符编码的不一致,尤其是在客户端与服务器之间的通信过程中。 Ajax(Asynchronous...
解决中文乱码问题的关键在于设置正确的`contentType`,确保客户端和服务器都使用相同的字符集。在给定的描述中提到,尝试在`ajaxSettings`中设置了`contentType: "application/x-www-form-urlencoded;charset=UTF-8...
总结起来,解决AJAX的GET和POST请求中的乱码问题主要涉及两方面:一是服务器端设置正确的响应字符编码,二是客户端确保请求数据的编码和解码过程与服务器端匹配。通过上述方法,可以有效地避免在处理非ASCII字符时...
综上所述,解决Java与JSP文件乱码问题的关键在于统一字符集设置、正确处理各种请求和响应的编码,以及确保数据库和服务器环境的编码一致。通过上述措施,可以有效避免乱码现象,提高应用程序的稳定性和兼容性。
GBK和GB2312都是针对中文的编码,但GBK的字符集比GB2312大,包含了更多的汉字和符号。因此,误用GB2312编码可能会导致部分字符无法正确显示。 使用Cookie传递数据虽然方便,但也存在一些问题。一是Cookie的大小有限...
在Struts框架中,汉字乱码问题是一个常见的问题,特别是在处理中文输入时。解决这个问题涉及到多个层面,包括页面编码设置、服务器配置以及Struts的Servlet配置。以下是对这些问题的详细解释: 1. 页面编码设置: ...
值得注意的是,此过滤器仅对POST方法有效,对于GET方法则不起作用,因此在调试过程中需特别注意GET请求的编码问题。 #### 三、JSP与HTML页面的字符集声明 在JSP或HTML页面中,应在头部声明字符集为UTF-8,这不仅是...
在Web开发中,PHP与AJAX的...当使用AJAX发送POST请求时,如果直接将包含中文字符的变量(如`val`)作为请求参数,可能会因为编码问题导致乱码。例如以下代码: ```javascript http_request.open("POST", url, true); ...
**Ajax中文乱码问题详解与解决方案** 在开发Web应用程序时,尤其是在处理中文字符时,Ajax中文乱码问题是一个常见的困扰。这是因为不同的系统、浏览器、服务器和文件可能使用不同的字符编码,导致数据在传输过程中...
AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个网页的情况下,能够更新部分网页的技术。...当服务器处理请求时,需要根据接收的数据类型(GET或POST)和编码格式正确解析和响应数据,以避免乱码问题。
本文将针对标题和描述中提到的Ajax中文乱码问题,提供几种常见的解决办法。 1. **设置Content-Type头部** 当使用Ajax发送请求时,数据默认被编码为Unicode格式。若服务器期望的数据编码为其他格式(如GBK或GB2312...
同时,也需要检查数据库表和字段的字符集设置,确保它们与应用程序使用的字符集一致。 ##### 7. 使用特定插件时的乱码 有些插件可能默认使用特定的字体,如果这些字体在当前系统中不存在,可能会导致乱码问题。...
通过这些步骤,我们可以确保在Ajax通信中中文参数的正确传输和解码,避免出现乱码问题。记住,对于不同的字符集,如GBK和GB2312,选择合适的编码转换策略至关重要。在实际开发中,推荐使用UTF-8作为统一的编码标准,...
总的来说,Ajax过滤器是一种解决Web应用中中文乱码问题的有效手段,通过在请求和响应之间添加一层处理,可以确保数据以正确的编码进行传输,提高应用的兼容性和用户体验。在实际项目中,根据具体需求,可能还需要...
在开发Java Web应用程序时,尤其是使用JSP技术时,经常遇到的一个问题是字符编码问题,这可能导致用户输入的数据在页面间传递时出现乱码。本文将详细介绍如何通过过滤器(Filter)来解决JSP页面传值时的乱码过滤问题...
当使用jQuery的`$.ajax`方法发送请求时,如果请求数据中含有中文字符,则可能会导致接收的数据出现乱码。这主要是因为前后端之间的编码不一致所引起的。 #### 三、问题分析与解决方法 下面我们将针对不同的情况,给...
2. **编码问题**:在处理中文等特殊字符时,要注意解决乱码问题,通常可以在web.xml中配置字符集过滤器。 3. **性能考虑**:在大型项目中,过多的数据传递可能会导致性能下降,因此需要合理设计数据结构和传递策略...