在JavaScript中通过URL传递汉字的方法


Posted in Javascript onApril 09, 2007

利用JavaScript通过URL方式向后台代码传值是一种经常用到的手段,但在传递汉字时经常会出现字符不全或变成乱码的问题,其原因是由于客户端IE浏览器的编码方式为GB2312(简体中文版WINDOWS的默认设置),而后台的C#代码使用utf8编码(创建WEB工程的默认配置)。
网上有很多方案解决该问题,如将web.config的编码方式改为GB2312、在客户端通过escape先编码再传,个心体会都不是很理想或有些特殊字符不支持。经过比较我决定使用encodeURIComponent在客户端进行编码,再传值,除了“/”不支持(但实际开发中很少需要传递该值,如果真有此请况,再加一层判断即可。
encodeURIComponent的帮助文档如下:
encodeURIComponent 方法
将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。
encodeURIComponent( encodedURIString ) 
必选的 encodedURIString 参数代表一个已编码的 URI 组件。
说明
encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent ,那么将返回初始的字符串。因为encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html ,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。
要求
版本 5.5
请参阅
decodeURI 方法 | decodeURIComponent 方法
应用于: Global 对象

我做了一个小例子来展现该效果  
Default.aspx代码:

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" >  
<head runat="server">  
    <title>无标题页</title>  
</head>  
<script type="text/javascript" language="javascript">  
    function callURL(Value1, Value2)  
    {  
        document.URL = "Default.aspx?Value1=" + encodeURIComponent(Value1) + "&Value2=" + encodeURIComponent(Value2);  
    }  
</script>  
<body>  
    <form id="form1" runat="server">  
    <div>  
        Value1=<input id="Text1" type="text" value="1234567890"/><br />  
        Value2=<input id="Text2" type="text" value="中华人民共和国"/>  
        <br />  
        <input id="Button1" type="button" value="提交" onclick="callURL(Text1.value, Text2.value)"/></div>  
    </form>  
</body>  
</html> 

Default.aspx.cs代码:
using System;  
using System.Data;  
using System.Configuration;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Web.UI.HtmlControls;  
public partial class _Default : System.Web.UI.Page   
{  
    protected void Page_Load(object sender, EventArgs e)  
    {  
        string tmpValue1 = "";  
        string tmpValue2 = "";  
        if (Request.QueryString["Value1"] != null)  
        {  
            tmpValue1 = Request.QueryString["Value1"].ToString();  
        }  
        if (Request.QueryString["Value2"] != null)  
        {  
            tmpValue2 = Request.QueryString["Value2"].ToString();  
        }  
        Response.Write("Value1=" + tmpValue1 + "<br />" + "Value2="  + tmpValue2);  
    }  
}
Javascript 相关文章推荐
SyntaxHighlighter语法高亮插件使用说明
Aug 14 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 Javascript
jquery sortable的拖动方法示例详解
Jan 16 Javascript
使用typeof判断function是否存在于上下文
Aug 14 Javascript
js中作用域的实例解析
Mar 16 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
Jun 17 Javascript
vue绑定class与行间样式style详解
Aug 16 Javascript
AngualrJs清除定时器遇到的坑
Oct 13 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
vue select选择框数据变化监听方法
Aug 24 Javascript
关于vue-cli 3配置打包优化要点(推荐)
Apr 22 Javascript
Vue Router的手写实现方法实现
Mar 02 Javascript
Javascript中eval函数的使用方法与示例
Apr 09 #Javascript
给网站上的广告“加速”显示的方法
Apr 08 #Javascript
超级简单的图片防盗(HTML),好用
Apr 08 #Javascript
filemanage功能中用到的lib.js
Apr 08 #Javascript
filemanage功能中用到的common.js
Apr 08 #Javascript
收集的网上用的ajax之chat.js文件
Apr 08 #Javascript
在页面上点击任一链接时触发一个事件的代码
Apr 07 #Javascript
You might like
PHP Curl出现403错误的解决办法
2014/05/29 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
禁止空格提交表单的js代码
2013/11/17 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
JavaScript深度复制(deep clone)的实现方法
2016/02/19 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
2021/01/19 Vue.js
浅析Git版本控制器使用
2017/12/10 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
python实现单张图像拼接与批量图片拼接
2020/03/23 Python
python实现简单的tcp 文件下载
2020/09/16 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
香港优质食材和美酒专门店:FoodWise
2017/09/01 全球购物
全球速卖通西班牙站:AliExpress西班牙
2017/10/30 全球购物
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
股权转让协议书范本
2014/04/12 职场文书
扬尘污染防治方案
2014/06/15 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
2015年度党员个人总结
2015/02/14 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript
centos8安装MongoDB的详细过程
2021/10/24 MongoDB
Go语言基础map用法及示例详解
2021/11/17 Golang