IE7、IE8下使用escape、encodeURI传递中文参数乱码的问题及解决方案
js跳转到指定页面,一旦escape()中文数据,浏览器就会终止和没有反应。上网搜了半天始终不得解。一种说法是,escape中文之后,url中出现了%u,IE7和IE8拒绝执行。目前看来差不多是这样的。
不得已,只好使用encodeURI(),但是asp并不能接受encodeURI的中文,而是解析成乱码。于是又上网搜了半天,始终不得解。应该是asp以及vbscript中并没有这样的内置函数。
于是不得不开始了漫长的寻找解决方案之路。
我们先来看。IE8必将取代成为主流,而IE8不支持escape,所以只有采用encodeURI和encodeURIComponent而放弃escape,对应的解码函数为:decodeURI和decodeURIComponent。
而现在的问题是,通过js用encodeURI或encodeURIComponent编码后的数据是以utf-8的方式编码的,而asp程序对utf-8支持很差,通常是gb2312的,于是服务器端将以utf-8格式编码的数据,以asp自身的server.urlencode的方式进行解码、而且这个过程是自动的、没有找到干预的办法,这样数据流经过这样的折腾,已经乱了,解析出来的中文必然是乱码。
假设asp没有自动解码,问题就好处理了。在服务器端调用js的decodeURI或decodeURIComponent函数,就可正确识别中文,因为他们才是对应匹配的。代码如下:
<script language="javascript" type="text/javascript" runat="server">function mydecodeurl(s){return decodeURIComponent(s);}</script>
这样的程序在asp中是可以直接调用的,如<%= mydecodeurl(string) %>
但是能不能让asp不自动解码呢?我认为是asp的设计机制就是这样的,即便是可以让其不自动解码,但是很可能面临新的问题,所以这不是一个好办法。
苦思了许久,想到一个变通的办法,在各个浏览器上测试通过。
使用encodeURI和encodeURIComponent函数编码过的中文是形如"%E7%94%B5%E8%84%91",asp自动解码是因为asp认为它和server.urlencode编码过的形式差不多,以为是自家的东西,结果就一厢情愿的给解码了。现在我们稍微处理一下,把其中的"%"用js替换成"$",即为"$E7$94$B5$E8$84$91",然后在js提交给asp,亲爱的看到什么了吗,asp不再强行解码了!剩下的问题就很简单了,用asp的replace再把"$"替换回"%",然后在服务器端执行js的decodeURI或decodeURIComponent函数,问题解决。
核心代码:
客户端提交时js处理(string为含中文的要处理的字符串):encodeURIComponent(string).replace(/%/g,'$')
服务器端接收并解码:
<script language="javascript" type="text/javascript" runat="server">function mydecodeurl(s){return decodeURIComponent(s);}</script>
<%
response.write mydecodeurl(replace(string,"$","%"))
%>
本文网址: http://www.lantian360.com/blueblog/blog.asp?id=535
转自:http://blog.csdn.net/lucky8star/article/details/5575427
IE7、IE8下使用escape、encodeURI传递中文参数乱码的问题及解决方案的更多相关文章
- js的url中传递中文参数乱码,如何获取url中参数问题
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: <script type=”text/javascript ...
- JS中的的Url传递中文参数乱码,如何获取Url中参数问题
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码:<script type=”text/javascript” ...
- Js的Url中传递中文参数乱码的解决
一:Js的Url中传递中文参数乱码问题,重点:encodeURI编码,decodeURI解码: 1.传参页面Javascript代码: 2. 接收参数页面:test02.html 二:如何获取Url& ...
- asp.net——地址栏传递中文参数乱码解决方案
地址栏传递中文参数乱码解决方案: 很多人在使用地址栏传递参数的时候都会遇到一个麻烦的问题(参数为中文时乱码了),那要怎么解决呢? 其实解决这个问题也不怎么难,无非就是给要传递的中文参数一个编码解码的过 ...
- url 传递中文参数乱码问题的终极解决方法。
估计很多人在做web开发的时候,都会碰到过url传递中文参数,有时候会出现乱码的问题,但有些项目或者环境,又不会有问题.当遇到乱码的时候,上网找了很多解决方案,比如: 页面设置它的编码方式,改成utf ...
- GET方法传递中文参数乱码解决办法
1.在页面中对你的URL进行编码 使用------encodeURI(你要使用的中文参数值)如:...?username"+encodeURI(“小甜甜") 2.在后台通过解码来接 ...
- jquery与后台相互传递中文参数乱码
前端.后台传递中文参数,乱码的情况: var a="参数乱码"; //编译两次 window.location.href=encodeURI(encodeURI(&q ...
- javascript通过url向jsp页面传递中文参数乱码解决方法
解决方法:在传递参数前将中文参数进行两次编码,jsp页面获取参数后对中文参数进行一次解码,中文参数就不会变为乱码了! 参考例子: <%@ page language="java&quo ...
- URL传递中文参数乱码问题
web项目开发中,经常遇到中文参数乱码问题,而且有时候明明测试服务器上好用,换个正式环境就不用的情况也经常出现,今天做一个记录,防止自己以后忘记 1.地址栏url请求带中文参数 这类
随机推荐
- [python]乱码:python抓取脚本
参考: http://www.zhxl.me/1409.html 使用 python urllib2 抓取网页时出现乱码的解决方案 发表回复 这里记录的是一个门外汉解决使用 urllib2 抓取网页时 ...
- SpringCloud学习(1)——SpringCloud概述
微服务架构: 微服务架构是一种架构模式或者说是一种架构风格, 他提倡将单一应用程序划分成一组小的服务, 每个服务运行在其独立的进程中, 服务之间互相协调,互相配合, 为用户提供最终价值.服务之间采用轻 ...
- linux 下 mysql 主从配置
话不多说,直接干. 准备条件:安装两个mysql数据库,随便哪个作主库,另一个从库. 1.在主库创建 复制用的账号 grant replication slave ,replication clien ...
- UndertowServer+SpringMVC+Thymeleaf模板引擎构建轻量级的web项目
这两周需要写一个页面来请求另一个服务中的接口,服务器采用了超轻量级的undertow,模板引擎采用的是Thymeleaf,在寻找页面资源位置这个地方难住了我.下面分享一下,这方面的代码. Spring ...
- LightOJ 1089 - Points in Segments (II) 线段树区间修改+离散化
http://www.lightoj.com/volume_showproblem.php?problem=1089 题意:给出许多区间,查询某个点所在的区间个数 思路:线段树,由于给出的是区间,查询 ...
- selenium.common.exceptions.ElementNotVisibleException: Message: element not visible处理方法:selenium针对下拉菜单事件的处理
使用Selenium爬虫时,可能会遇到一些下拉菜单,动态加载,如果直接使用find_element_by_函数会报错,显示selenium.common.exceptions.ElementNotVi ...
- [acmm week12]染色(容斥定理+组合数+逆元)
1003 染色 Time Limit: 1sec Memory Limit:256MB Description 今天离散数学课学了有关树的知识,god_v是个喜欢画画的人,所以他 ...
- Linux命令之uptime
这是什么 uptime用来查看系统已经启动了多长时间了. 它显示的信息和w命令的头(第一行)是一样一样的. 举个栗子 举一个实际的应用场景: 比如发现服务器上的某些没有加入开机启动的服务挂了一片,这个 ...
- 爬虫实战--基于requests和beautifulsoup的妹子网图片爬取(福利哦!)
#coding=utf-8 import requests from bs4 import BeautifulSoup import os all_url = 'http://www.mzitu.co ...
- bzoj 1143 二分图最大独立集
我们可以将一个点拆成两个点x,y,那么如果存在一条i->j的路径,我们就连接xi,yj,那么答案就是n-最大匹配数. 因为i->j所以对于i与j只能选一个,那么我们只需要求出来二分图的最大 ...