在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 相关文章推荐
Javascript Tab 导航插件 (23个)
Jun 11 Javascript
jQuery实现用方向键控制层的上下左右移动
Jan 13 Javascript
鼠标经过tr时,改变tr当前背景颜色
Jan 13 Javascript
jQuery多项选项卡的实现思路附样式及代码
Jun 03 Javascript
Javascript核心读书有感之类型、值和变量
Feb 11 Javascript
Lab.js初次使用笔记
Feb 28 Javascript
js简单实现Select互换数据的方法
Aug 17 Javascript
Node.js巧妙实现Web应用代码热更新
Oct 22 Javascript
JavaScript中使用数组方法汇总
Feb 16 Javascript
Three.js的使用及绘制基础3D图形详解
Apr 27 Javascript
JS简单实现自定义右键菜单实例
May 31 Javascript
react native 原生模块桥接的简单说明小结
Feb 26 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设计模式 Chain Of Responsibility (职责链模式)
2011/06/26 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
php短址转换实现方法
2015/02/25 PHP
PHP数据库操作二:memcache用法分析
2017/08/16 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
AngularJS实现用户登录状态判断的方法(Model添加拦截过滤器,路由增加限制)
2016/12/12 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
跟老齐学Python之Python文档
2014/10/10 Python
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
pycharm运行出现ImportError:No module named的解决方法
2018/10/13 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
详解Python self 参数
2019/08/30 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
实现向右循环移位
2014/07/31 面试题
小学开学典礼主持词
2014/03/19 职场文书
会计核算科岗位职责
2014/03/19 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
毕业生党员个人总结
2015/02/14 职场文书
面试通知单大全
2015/04/20 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
孔繁森观后感
2015/06/10 职场文书
在Python中如何使用yield
2021/06/07 Python
python 进阶学习之python装饰器小结
2021/09/04 Python