问题:A应用前端发起一个ajax http请求,请求url2的数据,假设url2=http://www.xxx.com/a.htm?k=%25
由于url2对应的应用进行了gbk编码设置,后台无法通过额外的参数encoding=utf-8来识别数据的编码格式,以致其中k参数需要的编码格式必须为gbk格式;而A应用由于是前端js触发ajax请求,采用encodeURIComponent()方法只能进行utf-8编码。
解决方案:
1.在A应用处用encodeURIComponent()2次编码参数数据,如k=中文(utf-8编码为%E4%B8%AD%E6%96%87),进行2次编码后,encodeURIComponent(encodeURIComponent(k))=%25E4%25B8%25AD%25E6%2596%2587
2.将请求发送到url2 =
http://www.xxx.com/a.htm?k=%25E4%25B8%25AD%25E6%2596%2587&encoding=utf-8
3.url2对应应用收到这个请求后,web容器会对%25进行解码,变成%,对应request.getParameter("k")=%E4%B8%AD%E6%96%87
4.再URLDecoder.decode("%E4%B8%AD%E6%96%87", "UTF-8")就能解码回原来的中文而不会乱码了。
分享到:
相关推荐
前端页面通过ajax发送请求,参数都是默认使用utf-8编码格式对参数进行url编码,这样的后果就是,当后台页面如果使用gbk编码的话,会出现乱码的情况,然后网上找到一个大神写的gbk.js. 但是里面没有做出详细介绍,这里...
在Ajax请求中,JavaScript默认将数据以UTF-8编码发送。这意味着,即使页面是GBK编码,当通过Ajax提交数据时,数据会被转化为UTF-8编码。在服务器端,需要正确识别并处理这些UTF-8编码的数据,通常是通过HTTP请求头中...
charset=UTF-8"`,确保请求体中的中文字符以UTF-8编码发送。 3. **正确使用JavaScript编码函数**:在传递中文字符时,使用`encodeURIComponent()`函数进行编码,它会将所有非字母数字字符转换为UTF-8序列。在接收...
这一问题的根本原因在于浏览器和服务器之间的数据传输默认采用的是UTF-8编码,而在GBK编码环境下,中文字符的编码形式与UTF-8不同,因此需要对发送的数据进行额外的处理。 #### 解决方案 对于此问题,可以通过直接...
charset=utf-8”` 表明数据将以URL编码(URLEncode)的形式发送,并且使用UTF-8编码。确保这个编码与服务器端处理请求的编码相匹配是防止乱码的关键。 2. **URL编码**:在JavaScript中,使用`encodeURI()`或`...
`HttpServletRequest`的`getParameter()`方法默认会按照服务器配置的编码进行解码,所以如果你的服务器配置了"URIEncoding=UTF-8",则会尝试将参数从UTF-8编码解码。如果在JSP页面中使用的是GBK编码,那么你需要手动...
因此,当Ajax发送或接收UTF-8编码的数据时,理论上不应出现乱码。 然而,乱码问题可能源于以下几个方面: 1. **服务器响应头设置不正确**:服务器应明确指定返回数据的字符编码。例如,在PHP中,可以使用`header('...
1. URL编码问题:URL不支持非ASCII字符,因此在发送包含中文字符的请求时,需要先将这些字符转换为UTF-8编码的%xx形式。但如果不正确地处理这个过程,可能会导致乱码。 2. 服务器解析问题:服务器可能没有正确地识别...
这样,中文字符会被正确地转换为它们的UTF-8编码序列,确保在传输过程中不被破坏。 对于GBK或其他非UTF-8编码的环境,情况会更复杂。你需要确保服务器和客户端都使用相同的编码。在发送请求之前,可以先将中文字符...
在Ajax中,使用UTF-8编码发送数据通常是安全的,因为UTF-8能够正确地表示大部分Unicode字符。如果在发送数据时遇到乱码,这通常意味着后端服务器未能正确识别并解码UTF-8编码的数据。例如,如果服务器期望的是GBK...
- 返回数据时,服务器端应以UTF-8编码返回响应,客户端接收到数据后,需按UTF-8解码。 总结,解决Ajax乱码问题的关键在于确保编码的统一,从文件编码、请求头、服务器端处理到响应头,每个环节都要设定为UTF-8,以...
这段代码可以确保发送的请求数据以UTF-8编码。 - 接收数据时处理编码: 当接收到服务器响应时,可以手动指定响应的编码格式,例如: ```javascript xhr.responseType = 'text'; xhr.onreadystatechange = ...
本文将探讨如何使用AJAX技术解决UTF8编码的表单提交到GBK编码脚本时出现的乱码问题,以及如何处理不同编码的表单数据在同一个页面上的汇总。 首先,了解基本的编码知识是必要的。GBK是基于GB2312的汉字编码标准,它...
这里的关键是`requestEncoding`和`responseEncoding`两个属性都需要设置为`utf-8`,这样可以确保客户端发送的请求和服务器响应的数据都使用UTF-8编码。 #### 步骤3:针对特定页面进行设置 如果您只需要对某个特定...
这样,URL中的UTF-8编码中文参数会被正确处理,避免出现乱码。 此外,对于AJAX请求,还可以考虑使用POST方式传递数据,而不是GET方式,因为POST方式可以携带更多数据且不会出现在URL中,从而避免了URL编码带来的...
1. **请求头设置不正确**:Ajax请求默认使用UTF-8编码,但服务器可能使用了不同的编码格式。若在`Content-Type`请求头中没有明确指定编码,服务器可能无法正确解析中文字符。 2. **响应头设置不正确**:服务器返回...
2. **服务器端与客户端编码不一致**:例如,在Ajax请求中,服务器返回的数据采用UTF-8编码,但客户端期望的是GB2312编码,这也会导致乱码。 3. **文件保存格式错误**:编辑器默认保存的编码格式与实际需要的编码格式...
在服务器端设置编码(如Tomcat的`<Connector URIEncoding="utf-8" />`),同时在JavaScript中使用`encodeURI()`函数对中文参数进行UTF-8编码。 通过理解和掌握这些Ajax的基本概念和处理技巧,开发者能够有效地实现...
在PHP中,如果接收到的POST数据是乱码,可以在服务器端进行转换,如使用`iconv`函数将UTF-8编码转换为GBK。例如: ```php $_POST["content"] = iconv("UTF-8", "GBK", $_POST["content"]); ``` 对于Java ...
AJAX 的表单提交中文问题的简单解决方案.doc`和`JSP 中 AJAX 的表单提交中文问题的简单解决方案 - GBK 版本.doc`可能提供了在GBK编码环境下处理AJAX表单提交的方案,这通常涉及在发送请求前将中文数据转码。...