- 浏览: 197577 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (163)
- Linux (14)
- html (4)
- Lucene (2)
- WebService (4)
- oracle (7)
- spring (2)
- eclipse (15)
- AIX (2)
- windows (3)
- android (1)
- Java基础 (15)
- Struts (7)
- Java面向对象 (2)
- Java Web (1)
- Apache (2)
- Web容器 (12)
- Google (2)
- javascript (32)
- 爬虫 (2)
- MySQL (4)
- C#开发 (3)
- Hibernate (3)
- 面试题 (2)
- Birt报表 (2)
- Flex (1)
- UML (2)
- 非技术 (3)
- Mercurial(hg) (1)
- css (2)
- SVN (1)
- Mac (1)
- ORM框架 (1)
- 测试技术 (2)
- 浏览器兼容 (5)
最新评论
-
xiebo1983:
http://www.sqkoo.com/show/detai ...
完美解决MySQL中文乱码 -
hzy888:
楼主,你好,你说的问题,我自己写例子测试,没有你说的效果,两个 ...
onblur和onclick冲突 -
ahack:
onblur 谢谢。
onblur和onclick冲突 -
lkf009:
an_it_eye_2012 写道降下来了,怎么再升上去呢,需 ...
Windows IE8降为IE6 -
haohao-xuexi02:
貌似这个方法不错啊
Windows IE8降为IE6
转自:
http://blog.csdn.net/zzz_robinson/article/details/6447924
地址栏中出现汉字的情况有两种,一种是汉字出现在URL的路径部分,一种是汉字出现在URL的传参的部分,第二种情况的时候必须采用编码后传参,接受时解码的方式完成传参。js中编码有escape(),encodeURI(),encodeURIComponent()三个常用的方法,escape()常常用在提交页面和处理页面的编码格式相同的情况下(比如它们都是GB2312),encodeURI()和encodeURIComponent()的用法基本相同,区别在于encodeURIComponent()也对"?"等特殊字符进行编码。
一开始遇到中文参数的时候,使用encodeURI()进行了一遍编码,传过去后,发现解码出现问题,于是想到可能是编码方法使用错误,于是使用escape()方法,这时发现解码时抛出isHexDigit异常。借助百度搜索isHexDigit异常,
发现原来,是escape()方法造成了异常,同时了解了浏览器传递地址的一些原理,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给处理页面,
然后由处理页面进行再次解码。由此我想到一直使用encodeURI方法是正确的,只是需要使用两次encodeURI方法,例如encodeURI(encodeURI("中文"));第一次是把中文编码成%xy的格式,
第二次是对%xy中的%进行编码,%编码成%25。整个传参过程大体应该是:提交页面使用encodeURI(encodeURI("中文"))编码,把最后的编码结果%25xy传递给处理页面的过程中,浏览器获取URL地址
(注意openModelDialog方法,浏览器获取不到参数编码)后解码成%xy,然后把%xy传递给处理页面,处理页面使用URLDecoder.decode(request.getParameter("参数名"),"UTF-8");完成解码。
总结:
1、汉字出现在URL路径部分的时候不需要编码解码;
2、使用encodeURI进行2次编码;
3、在openModelDialog()打开的模式窗体里没办法用request.getParameter正确获取参数;
客户端和服务器在传递数据时可以用过滤器filter解决字符编码问题,但filter只能解决post方式提交的数据。对于get方式,可以使用两次encodeURI(encodeURI(“中文”))并在服务器中使用URLDecoder.decode(“中文”, "UTF-8");
今天用Ajax校验数据时也遇到这个问题,尽管页面、类和web容器都统一了字符编码,提交的数据依然是乱码,所以就采用了2次encodeURI()编码方式,乱码问题就解决了。
页面
/exportExcel.topinfo?ls="+encodeURI(encodeURI(_tmplsgx))+"&zt="+encodeURI(encodeURI(_tmpzt))s
action中
String ls=request.getParameter("ls");
ls = new String(ls.getBytes("iso-8859-1"),"utf-8");
ls = java.net.URLDecoder.decode(ls,"UTF-8");
地址栏中出现汉字的情况有两种,一种是汉字出现在URL的路径部分,一种是汉字出现在URL的传参的部分,第二种情况的时候必须采用编码后传参,接受时解码的方式完成传参。js中编码有escape(),encodeURI(),encodeURIComponent()三个常用的方法,escape()常常用在提交页面和处理页面的编码格式相同的情况下(比如它们都是GB2312),encodeURI()和encodeURIComponent()的用法基本相同,区别在于encodeURIComponent()也对"?"等特殊字符进行编码。
一开始遇到中文参数的时候,使用encodeURI()进行了一遍编码,传过去后,发现解码出现问题,于是想到可能是编码方法使用错误,于是使用escape()方法,这时发现解码时抛出isHexDigit异常。借助百度搜索isHexDigit异常,
发现原来,是escape()方法造成了异常,同时了解了浏览器传递地址的一些原理,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给处理页面,
然后由处理页面进行再次解码。由此我想到一直使用encodeURI方法是正确的,只是需要使用两次encodeURI方法,例如encodeURI(encodeURI("中文"));第一次是把中文编码成%xy的格式,
第二次是对%xy中的%进行编码,%编码成%25。整个传参过程大体应该是:提交页面使用encodeURI(encodeURI("中文"))编码,把最后的编码结果%25xy传递给处理页面的过程中,浏览器获取URL地址
(注意openModelDialog方法,浏览器获取不到参数编码)后解码成%xy,然后把%xy传递给处理页面,处理页面使用URLDecoder.decode(request.getParameter("参数名"),"UTF-8");完成解码。
总结:
1、汉字出现在URL路径部分的时候不需要编码解码;
2、使用encodeURI进行2次编码;
3、在openModelDialog()打开的模式窗体里没办法用request.getParameter正确获取参数;
客户端和服务器在传递数据时可以用过滤器filter解决字符编码问题,但filter只能解决post方式提交的数据。对于get方式,可以使用两次encodeURI(encodeURI(“中文”))并在服务器中使用URLDecoder.decode(“中文”, "UTF-8");
今天用Ajax校验数据时也遇到这个问题,尽管页面、类和web容器都统一了字符编码,提交的数据依然是乱码,所以就采用了2次encodeURI()编码方式,乱码问题就解决了。
页面
/exportExcel.topinfo?ls="+encodeURI(encodeURI(_tmplsgx))+"&zt="+encodeURI(encodeURI(_tmpzt))s
action中
String ls=request.getParameter("ls");
ls = new String(ls.getBytes("iso-8859-1"),"utf-8");
ls = java.net.URLDecoder.decode(ls,"UTF-8");
这样乱码就解决了。
-------------------------------------------------------------------------------------------------------------------------------
js url传值中文乱码之解决之道
因为js url在传值的过程中使用的是js自己默认的字符集编码规则,我们必须把它转成属于我们自己的编码规格
在websphere 中使用的是url=encodeURI(encodeURI(url)); //用了2次encodeURI 测试成功,第一次转换没有尝试,
处理方法一:
js 程序代码:url=encodeURI(url);注意是整个URL
服务器端的代码:String linename = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
处理方法二:
js:var url="name="+name;
url=encodeURI(encodeURI(url)); //用了2次encodeURI
window.location = "<%=path%>/inner/line/line.jsp?"+url;
服务器端的代码:
String linename = request.getParameter(name);
//java : 字符解码
linename = java.net.URLDecoder.decode(linename , "UTF-8");
发表评论
-
javascript keycode大全
2014-05-16 15:06 601keycode 8 = BackSpace Ba ... -
20个超实用的JavaScript技巧及最佳实践
2013-12-27 12:53 020个超实用的JavaScript技巧及最佳实践 Java ... -
json2.js 转字符串 中文 ascii
2013-11-07 19:16 1084最笨的方法把Json2.js里的JSON改下名称,改成JS ... -
jquery.uploadify插件实现图片上传和预览效果
2013-09-06 00:30 10941、js代码: <script typ ... -
jQuery获取浏览器中的分辨率
2013-07-24 13:17 879jQuery获取浏览器中的分辨率 <sc ... -
jquery 判断浏览器
2013-07-23 10:30 699<script type="text/ja ... -
javascript 中 关于top、clientTop、scrollTop、offsetTop等
2013-07-15 10:38 892网页可见区域宽: document.body ... -
jquery javascript刷新iframe
2013-07-04 10:56 2945<iframe src="1.htm&quo ... -
jquery 特效
2013-06-30 18:20 707http://www.jsfoot.com/css3/demo ... -
jquery draggable 方法的参数
2013-06-21 11:51 1194draggable方法有很多参数,今天我瞎摸弄明白了一下几个 ... -
js 调用iframe里面的js函数
2013-05-22 12:45 862当iframe有name属性的时候 <iframe ... -
Jquery 调用iframe里面的js函数
2013-05-22 12:44 1当iframe有name属性的时候 <iframe ... -
Jquery 控制disabled和readonly
2013-05-09 16:43 830Jquery的api中提供了对元 ... -
jquery 跳出each循环
2013-05-03 14:42 686答案是使用 return false; 切记哦,不是使用br ... -
js数组的一些技巧算法
2013-05-03 11:43 694js数组倒序 reverse() 方 ... -
iframe的重新加载刷新reload
2013-05-02 18:44 1149window.frames("dbdRightCo ... -
js 控制光标到最后
2013-05-02 13:16 660/** * 使光标到最后 * @param obj ... -
JS判断字串字节数,并截取长度
2013-04-27 11:40 830转自:http://www.cnblogs.com/scy2 ... -
JavaScript几种数组去掉重复值的方法
2013-04-23 10:40 840/** 转自 http://www.nowama ... -
JQuery中使用Ajax赋值给全局变量异常解决方案
2013-04-23 10:23 1304我们在用JQuery的Ajax从后台提取数据后想把它赋 ...
相关推荐
本主题将深入探讨“jsurl传值”与“java页面url传值中文编码&解码”的相关知识点。 首先,我们要了解URL编码。URL编码是根据RFC3986标准,对URL中的特殊字符进行转换,以避免与URL语法产生冲突。在JavaScript中,...
Java 页面URL传值中文乱码问题通常出现在前端Ajax请求中,当URL参数包含中文字符时,服务器端通过`request.getParameter()`获取参数时,可能会出现乱码现象。这是因为HTTP协议默认使用ISO-8859-1编码,而中文字符...
Java.io.CharConversionException: isHexDigit 是 Java 中一种常见的异常,通常发生在传输数据时编码不正确或 URL 传值时出现问题。本文将对该异常进行详细分析,介绍导致该异常的原因和解决方法。 一、问题描述 ...
总结起来,当遇到"java.io.CharConversionException: isHexDigit"异常时,应该检查前端传递的URL参数是否正确编码,并确保在服务器端使用正确的解码方法和字符集。使用`encodeURI`或`encodeURIComponent`函数代替`...
总结来说,解决Java页面URL地址传输参数乱码问题的关键在于确保URL编码和解码过程中的字符集一致。通过调整Tomcat服务器配置或者在Java代码中进行手动处理,可以有效地避免中文参数在URL传输过程中出现乱码。当然,...
总结来说,通过在前端进行正确的编码处理,并在后端通过正确的解码方法还原数据,我们能够有效地解决js传值后台中文乱码的问题。同时,熟练掌握JavaScript的各项操作技巧,对于提升Web开发的效率和质量也有着显著的...
在JavaScript中,URL编码是处理含有特殊字符,如空格或中文字符的URL的重要步骤。中文字符在URL中如果不经过编码,可能会导致乱码问题,因为URL标准只允许ASCII字符集的一部分。`encodeURI()` 和 `...
`dominoxpagesURL` 标签暗示了这是一个关于 Domino XPages 中 URL 参数编码与解码的问题。以下是详细的知识点解释: 1. **URL编码**: - 在 JavaScript 中,我们可以使用 `encodeURI()` 函数来编码一个 URI(统一...
在Web开发中,Ajax(Asynchronous ...总结,解决Ajax乱码问题主要涉及数据编码、请求头设置和服务器端解码,而页面传值则需根据需求选择适当的方法。理解并熟练运用这些技巧,能显著提升Web应用的性能和用户体验。
在服务器端,Java提供`URLEncoder.encode()`方法用于编码URL参数,而`URLDecoder.decode()`用于解码。确保在编码和解码时使用相同的字符集,以避免数据丢失或解析错误。 总结来说,处理URL特殊符号,尤其是`&`,...
在给定的代码片段中,开发者试图通过JavaScript点击事件触发超链接,并通过`encodeURI`函数对URL进行编码处理,以便在URL中正确传输包含中文字符的数据。同时,在服务器端,采用了`URLDecoder.decode()`方法来解码...
然而,这种做法增加了代码的复杂性,并且每次传递都需要进行编码解码操作。 在这种情况下,我们可以考虑使用一种另类的解决方案,即动态创建表单(Dynamic Form)的方法。这个方法的核心思想是利用HTML表单的POST...
在处理URL参数时,可能会遇到一些特殊字符问题,比如本文提到的“URL的参数中有加号传值变为空格”的问题。这个问题源于URL编码的规则。 URL编码是一种将特殊字符转换为ASCII码的过程,以便于在网络传输中正确解析...
在讨论JSP(Java Server Pages)传值时,遇到的本地无乱码而测试机出现乱码的问题是一个典型的编码问题,常见于网络编程和Web开发中。以下是对标题、描述和部分内容所涉知识点的详细解析。 ### 知识点解析 #### ...
1. 修改J2EE容器配置:例如Tomcat的`server.xml`,在`<Connector>`标签中设置`URIEncoding`属性为相应的中文编码(如GBK或GB2312),确保URL参数的正确解码。 2. 字符串编码转换:在接收数据时,使用`getBytes()`和...
在JavaScript编程中,当涉及到中文字符的传递时,可能会遇到乱码的问题,尤其是在与服务器进行交互,如Ajax请求或者通过URL参数传递时。这通常是因为字符编码不一致导致的。以下是一些解决JS传值出现中文参数乱码的...
总结来说,解决js通过地址栏给action传值导致的中文乱码问题,需要仔细考虑和检查编码和解码过程中所使用字符集的一致性和正确性。这不仅涉及到客户端和服务器端的字符编码设置,还包括在编码转换过程中所采用的方法...
在JSP页面的顶部添加`<%@page>`指令,设置`pageEncoding`和`contentType`属性,确保JSP页面的字符编码为UTF-8,以支持中文字符。例如: ```jsp <%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8...