js 处理url中文参数 java端接收处理

正常情况下当http请求中带有中文参数时,浏览器会自动对中文进行一次编码(按照当前页面的pageEncoding),java端容器会对接收到的参数自动进行一次转码,则request.getParameter取到的则为正常的数据

若浏览器不自动对中文编码,则java端再自动转码就会出现乱码情况,此时可以在js中用encodeURI 对中文进行编码,后台不用强制解码,则可正常取到数据,因为手动编码后不存在中文数据,对于默认会进行编码的浏览器来讲也不会产生影响

一般情况下, 发送 encodeURIComponent(parmeName)+"="+encodeURIComponent(parmeValue);
接收时, 直接 String paramValue = request.getParameter(paramName); // 容器自动解码.

我们知道 encodeURIComponent 使用的是 UTF-8 编码规则来编的.
如果 request.getParameter(paramName) 时,容器也按 UTF-8 解的话,是正确的.

如果 request.getParameter(paramName),容器没有按 UTF-8 解的话, 结果只有一个,就是乱码!
容器按什么编码来解码,决定于 request.setCharacterEncoding(***) 或者 服务器程序配置.

如果你在 jsp 程序中,能够 request.setCharacterEncoding("UTF-8"), 并且 修改服务器配置,让容器在解 GET 提交的参数时,使用 UTF-8.

如果因为项目需要,不能指定容器使用何种编码规则来解码提交的参数, 比如:需要接收来自不同页面,不地编码的参数内容时。 (又或者是开发人员被这有点复杂的东东搞得晕头转向,不懂得如何正确的去做好这接收参数的工作)
这个时候,在客户端对参数进行二次编码,可以有效的避开“提交多字节字符”的这个棘手问题。
因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的 Ascii 字符串。(这里把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的)
再编一次后,提交,接收时容器自动解一次 (容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1])
然后,再在程序中实现一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder(***, "UTF-8")) 就可以得到想提交的参数的原值。

时间: 2024-07-29 11:15:56

js 处理url中文参数 java端接收处理的相关文章

js传url中文参数乱码问题

$("#btnKeyWord").click(function () {         window.open("/Atraction/Atraction.aspx?keyword=" + encodeURI(encodeURI($("#txtKeyWord").val())));     }); 注意:这里要两次转码 1 2 3 4 5 6 7 $("#searchContent").val(decodeURI(getQu

JS中URL编码参数(UrlEncode)

网上有很多文字作品写涉及在JS中呈现类似UrlEncode功能时都是自定义参数来呈现,其实JS中本身就有那样的参数.参数parameter由于用类似URL的形式传过去 , 所以别直接就那样赋值以下是对变量值的URL编码总结 : 意见用encodeURIComponent() , GET 和POST方法都能够发送过去Java编程script中存在几种对URL字符串停止编码的窍门:escape(),encodeURI(),以及encodeURIComponent().这几种编码所起的功能各不相同.e

解决url中文参数乱码的问题--解码

<html> <body> <h3 class="projectName" id="projectName"></h3> <script type="text/javascript"> var unitID;    var unitName;    //获取参数的函数    function geturlPara()    {        var url = document.URL;

js获取url传递参数

js获取url传递参数 这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET函数: <Script language="javascript"> function GetRequest() { var url = location.search; //获取url中"?"符后的字串 var theRequest = new Object(); if (ur

js获取url的参数和值的N种有效方法

js获取url的参数和值的N种有效方法 function getParameterByName(name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regexS = "[\\?&]" + name + "=([^&#]*)"; var regex = new RegExp(regexS); var results =

js获取url传递参数(转)

js获取url传递参数 这里是一个获取URL带QUESTRING参数的JAVASCRIPT客户端解决方案,相当于asp的request.querystring,PHP的$_GET函数: <Script language="javascript"> function GetRequest() {     var url = location.search; //获取url中"?"符后的字串    var theRequest = new Object();

java url中文参数乱码问题

http://www.blogjava.net/jerry-zhaoj/archive/2009/07/16/286993.html 转 JAVA 中URL链接中文参数乱码的处理方法JAVA 中URL链接中文参数乱码的处理方法 JAVA 中URL链接中文参数乱码的处理方法 在url中问参数乱码,我们已经在 "解决ajax提交中文.URL中文参数传递后的乱码问题的解决办法" 一张提出了一中解决办法, 网子是:http://www.javaly.cn/javahome/java/conte

url中文参数乱码问题

1.问题: web项目里url的中文参数乱码 2.解决: (1)前台:encodeURI(encodeURI(code)) (2)后台:URLDecoder.decode(new String(code.getBytes("iso-8859-1"),"utf-8"), "utf-8") 3.疑问: (1)为什么前台需要编码两次? 因为request.getParameter(String)会进行一次URI的解码过程,调用内置的解码过程会导致乱码

URL中文参数乱码的一个解决办法

浏览器对有中文参数的url大部分都用utf-8编码,但我也曾经遇见过用GB2312编码的:如果遇见这样情况,那么接受到的参数就会出现乱码.乱码情况视服务器解码方式,Asp.Net网站一般默认为utf-8解码,如果GB2312编码就会出现乱码. 最佳的解决办法: 当然是使用js编码参数后再进行get或post: encodeURIComponent 特殊情况: 当然这是普通情况,如遇到 string input = GetUrlParam(key).ToLower();//GetUrlParam