在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移动web开发的响应式布局设计
Dec 04 Javascript
JavaScript实现下拉菜单的显示和隐藏
Jan 05 Javascript
把普通对象转换成json格式的对象的简单实例
Jul 04 Javascript
jQuery实现日期联动效果实例
Jul 26 Javascript
js方法数据验证的简单实例
Sep 17 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
Feb 10 Javascript
React学习笔记之事件处理(二)
Jul 02 Javascript
node.js基于express使用websocket的方法
Nov 09 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
May 28 Javascript
Vue Prop属性功能与用法实例详解
Feb 23 Javascript
Node.js实现简单管理系统
Sep 23 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数学运算
2011/12/30 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
PHP实现的用户注册表单验证功能简单示例
2019/02/25 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
一个符号插入器 中用到的js代码
2007/09/04 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
使用angular写一个hello world
2015/01/23 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
详解Vue方法与事件
2017/03/09 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
2018/01/27 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
js通过循环多张图片实现动画效果
2019/12/19 Javascript
优化Python代码使其加快作用域内的查找
2015/03/30 Python
介绍Python中内置的itertools模块
2015/04/29 Python
深入浅析Python字符编码
2015/11/12 Python
Python爬虫模拟登录带验证码网站
2016/01/22 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
Python-openCV开运算实例
2020/07/05 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
多媒体编辑专业毕业生推荐信
2013/11/05 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS