在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 面向对象编程基础:封装
Aug 21 Javascript
Javascript Cookie读写删除操作的函数
Mar 02 Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
jquery对象和DOM对象的任意相互转换
Feb 21 Javascript
jQuery EasyUI菜单与按钮详解
Jul 13 Javascript
在Layui中实现开关按钮的效果实例
Sep 29 Javascript
微信小程序(订阅消息)功能
Oct 25 Javascript
Vue中使用matomo进行访问流量统计的实现
Nov 05 Javascript
微信小程序实现吸顶特效
Jan 08 Javascript
前端vue+elementUI如何实现记住密码功能
Sep 20 Javascript
Vue实现鼠标经过文字显示悬浮框效果的示例代码
Oct 14 Javascript
解决vue-loader加载不上的问题
Oct 21 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
第二节--PHP5 的对象模型
2006/11/16 PHP
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
php输入数据统一类实例
2015/02/23 PHP
PHP内存使用情况如何获取
2015/10/10 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
ExtJS 2.0实用简明教程 之Border区域布局
2009/04/29 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
2012/02/02 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
7个去伪存真的JavaScript面试题
2016/01/07 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
javascript实现用户点击数量统计
2016/12/25 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
2020/04/01 Javascript
解决Python的str强转int时遇到的问题
2018/04/09 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
2018/09/13 Python
Python 使用list和tuple+条件判断详解
2019/07/30 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
Python APScheduler执行使用方法详解
2020/12/10 Python
新加坡领先的时尚生活方式零售品牌:CHARLES & KEITH
2018/01/16 全球购物
为什么要有struct关键字
2012/05/08 面试题
社区学习十八大感想
2014/01/22 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
抽样调查项目计划书
2014/04/24 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
团队拓展活动方案
2014/08/28 职场文书
学习党代会心得体会
2014/09/05 职场文书
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers