`

JS URL传中文参数引发的乱码问题

阅读更多

项目中碰到了一个乱码问题,从JS里传URL到服务器,URL中有中文参数,服务器里读出的中文参数来的全是“?”,查了网上JS编码相关资料得以解决。

解决方法如下:
1、在JS里对中文参数进行两次转码

var login_name = document.getElementById("loginname").value; 
login_name = encodeURI(login_name); 
login_name = encodeURI(login_name); 


2、在服务器端(业务逻辑处,即用到的地方)对参数进行解码

String loginName = ParamUtil.getString(request, "login_name"); //赋值的参数loginName
loginName = java.net.URLDecoder.decode(loginName,"UTF-8"); //对它继续转码,转为中文


在使用url进行参数传递时,经常会传递一些中文名的参数或URL地址,在后台处理时会发生转换错误。在有些传递页面使用GB2312,而在接收页面使用UTF8,这样接收到的参数就可能会与原来发生不一致。使用服务器端的urlEncode函数编码的URL,与使用客户端javascript的encodeURI函数编码的URL,结果就不一样。
javaScript中的编码方法:
1、escape() 方法:
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +
2、encodeURI() 方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '
3、encodeURIComponent() 方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )

因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。

另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有
分享到:
评论

相关推荐

    jspurl中中文参数的乱码解决.docx

    然而,不同的浏览器可能会使用不同的默认编码,比如GBK,这可能导致编码不一致,从而引发乱码问题。 当服务器(例如Tomcat)接收到GET请求时,它会默认使用ISO-8859-1字符集来解码URL中的参数。由于ISO-8859-1并不...

    彻底解决中文乱码的问题

    在IT行业中,尤其是在Java编程领域,中文乱码问题是一个常见的挑战。这主要涉及到字符编码的处理,涉及到Unicode、GBK、UTF-8等不同编码格式之间的转换和一致性问题。本篇文章将深入探讨这个问题,并提供一种彻底...

    Url传值乱码解决方案

    1. **确保正确编码**:在前端,使用`encodeURIComponent()`函数对URL参数进行编码,确保所有特殊字符都被正确处理。例如: ```javascript let urlValue = encodeURIComponent("包含空格和特殊字符的字符串"); ```...

    WebOffice表单中参数乱码解决办法

    在JavaScript中使用`encodeURIComponent()`函数对参数进行编码,该函数可以将特殊字符转换为适用于URL的标准格式,从而避免传输过程中的编码问题。例如: ```javascript document.all.WebOffice1.HttpAddPostString...

    jsp中页面间传汉字参数转码的方法.docx

    在JavaServer Pages (JSP) 开发中,页面间的参数传递是常见的操作,尤其是在处理包含汉字的参数时,由于编码问题可能会导致乱码。本文主要介绍如何在JSP中正确地进行汉字参数的转码与解码,确保数据在页面间传递时...

    SpringMVC解决GET请求时中文乱码的问题.rar

    这个问题主要源于请求参数在URL中编码时使用的是UTF-8以外的字符集,导致服务器接收到的参数解码后出现乱码。本文将深入探讨这个问题,并提供解决方案。 一、问题解析 1. GET请求原理:GET请求的参数通常会附加在...

    中文乱码问题解决.pdf

    在上述情况中,开发者尝试解决由URL编码引发的乱码问题,主要涉及到两个方法: 方法1: 这种方法试图通过在后台将ISO-8859-1编码的字符串转换为UTF-8编码。首先,从HTTP请求中获取参数(如`work`),然后使用`...

    解决ajax乱码和页面传值问题

    页面间值传递有多种方式,包括URL参数、Cookie、LocalStorage、SessionStorage、全局变量、事件触发等。以下是一些常用方法: 1. URL参数:适用于简单的值传递,通过修改或解析URL的查询字符串来实现。 ```...

    中文乱码解决方案终稿.pdf

    这是因为IE6将URL编码为UTF-8,而Tomcat可能仍按照默认的ISO-8859-1解码,从而引发乱码。 请求响应流程如下: 1. 表单GET提交:浏览器根据页面charset编码请求,Tomcat根据URIEncoding解码。 2. 表单POST提交:过滤...

    j2ee21:ajax01:get提交、post提交(完成用户名搜索),两者的区别(中文乱码问题、缓存问题)

    此外,中文乱码问题在GET请求中较为常见,因为URL编码可能导致字符显示不正确。 2. POST提交:POST方法是用于向服务器发送数据的主要方法,适合传输大量数据和敏感信息。在AJAX中,POST数据包含在请求体中,不受URL...

    JS request函数 用来获取url参数

    - **JS URL传中文参数引发的乱码问题**:探讨了在处理含有中文字符的URL参数时可能出现的问题及解决方案。 通过以上介绍,我们可以看到`request`函数在处理URL参数方面具有很大的灵活性和实用性。无论是基本的参数...

    java jsp解决utf-8乱码.zip

    5. 字符流操作不当:在处理输入输出流时,如果没有指定正确的字符编码,例如读取或写入文件,也可能引发乱码。 针对这些问题,我们可以采取以下措施进行解决: 1. 使用统一的编码:确保整个项目的文件都使用UTF-8...

    基于PHP的URL编码转换工具源码.zip

    9. **URL解码问题**:解码时要注意URL编码可能会引发的XSS(跨站脚本攻击)或SQL注入等安全问题,因此在处理用户输入时应谨慎。 10. **编码与解码的最佳实践**:在处理URL时,应该始终使用适当的编码和解码函数,而...

    如何解决JQuery ajaxSubmit提交中文乱码

    在使用JQuery的`ajaxSubmit`方法提交包含中文字符的数据时,可能会遇到乱码问题,尤其是在不同的浏览器中表现不一致。这是因为浏览器在处理字符编码时的差异,以及服务器端解码方式的不同。以下是对这个问题的深入...

    iframe_自适应高度(简单好用).txt

    需要注意的是,由于同源策略(Same-origin policy)的存在,如果`iframe`加载的内容来自于不同的域名,那么在主页面中通过JavaScript访问`iframe`内部文档的属性会受到限制,可能会引发安全错误。解决这一问题的方法...

    JavaScript 未结束的字符串常量常见解决方法

    当你的JavaScript文件和HTML页面的字符编码不一致时,可能会导致字符串中的特殊字符因编码问题而显示为乱码,进而引发“未结束的字符串常量”的错误。例如,如果HTML声明为`charset="UTF-8"`,但JavaScript文件实际...

    基于。net 基础的 ASP模拟题 经典版

    7. 解决 JSP 中文乱码问题:可以通过在页面头部设置 charset,利用过滤器对请求进行转码,或者对 `request` 和 `response` 进行编码设置来解决中文乱码问题。系统自动设置一般不可靠,需要开发者手动处理。 8. ...

Global site tag (gtag.js) - Google Analytics