在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 12 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
Dec 02 Javascript
js综合应用实例简单的表格统计
Sep 03 Javascript
JavaScript变量声明详解
Nov 27 Javascript
JavaScript设计模式之建造者模式介绍
Dec 28 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
Dec 02 Javascript
AngularJS基础 ng-mouseover 指令简单示例
Aug 02 Javascript
动态JavaScript所造成一些你不知道的危害
Sep 25 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
Apr 20 Javascript
vue移动端轻量级的轮播组件实现代码
Jul 12 Javascript
用webAPI实现图片放大镜效果
Nov 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
ThinkPHP实现一键清除缓存方法
2014/06/26 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
php实现数字补零的方法总结
2018/09/12 PHP
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
JavaScript交换两个变量值的七种解决方案
2016/12/01 Javascript
js定时器实例分享
2016/12/20 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
微信小程序 ES6Promise.all批量上传文件实现代码
2017/04/14 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
Javascript 类型转换、封闭函数及常见内置对象操作示例
2019/11/15 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
pandas 使用apply同时处理两列数据的方法
2018/04/20 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
numpy和pandas中数组的合并、拉直和重塑实例
2019/06/28 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
解决使用python print打印函数返回值多一个None的问题
2020/04/09 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
Python list和str互转的实现示例
2020/11/16 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
自动化职业生涯规划书范文
2014/01/03 职场文书
军训 自我鉴定
2014/02/03 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
2015年组织部工作总结
2015/04/03 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
Python MNIST手写体识别详解与试练
2021/11/07 Python
php将xml转化对象的实例详解
2021/11/17 PHP
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers