在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 相关文章推荐
jQuery 联动日历实现代码
May 31 Javascript
Javascript中自动切换焦点实现代码
Dec 15 Javascript
详解jquery uploadify 上传文件
Nov 09 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
Jun 30 Javascript
javascript模拟map输出与去除重复项的方法
Feb 09 Javascript
AngularJS入门教程之AngularJS模型
Apr 18 Javascript
简单实现JS倒计时效果
Dec 23 Javascript
jquery广告无缝轮播实例
Jan 05 Javascript
简单实现jQuery弹幕效果
May 06 jQuery
微信小程序分享海报生成的实现方法
Dec 10 Javascript
解决layui调用自定义方法提示未定义的问题
Sep 14 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
Dec 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中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
javascript中检测变量的类型的代码
2010/12/28 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
jQuery查看选中对象HTML代码的方法
2016/06/17 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
2017/02/21 Javascript
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
微信小程序之绑定点击事件实例详解
2017/07/07 Javascript
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
js实现中文实时时钟
2020/01/15 Javascript
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
python 搜索大文件的实例代码
2019/07/08 Python
Python操作qml对象过程详解
2019/09/26 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
美国首屈一指的礼品篮供应商:GiftTree
2018/01/06 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
销售人员求职信
2014/07/22 职场文书
销售竞赛活动方案
2014/08/23 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
个人优缺点总结
2015/02/28 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
身份证丢失证明
2015/06/19 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
蓝牙耳机怎么连接电脑win11? Win11蓝牙耳机连接电脑的技巧
2023/01/09 数码科技