在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 相关文章推荐
JS动画效果代码3
Apr 03 Javascript
jQuery select控制插件
Aug 17 Javascript
js css样式操作代码(批量操作)
Oct 09 Javascript
jquery $(document).ready() 与window.onload的区别
Dec 28 Javascript
JS获取后台Cookies值的小例子
Mar 04 Javascript
基于JavaScript获取鼠标位置的各种方法
Dec 16 Javascript
轻松实现jquery手风琴效果
Jan 14 Javascript
AngularJS学习第二篇 AngularJS依赖注入
Feb 13 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
Feb 28 Javascript
jquery应用实例分享_实现手风琴特效
Feb 01 jQuery
extjs图表绘制之条形图实现方法分析
Mar 06 Javascript
vue-cli3 引入 font-awesome的操作
Aug 11 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与Java对比学习日期时间函数
2016/07/03 PHP
php文件上传 你真的掌握了吗
2016/11/28 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
jQuery 如何先创建、再修改、后添加DOM元素
2014/05/20 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
JS基于面向对象实现的拖拽库实例
2015/09/24 Javascript
Jquery跨域获得Json的简单实例
2016/05/18 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
基于vue.js实现分页查询功能
2018/12/29 Javascript
vue+element UI实现树形表格带复选框的示例代码
2019/04/16 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
vue实现放大镜效果
2020/09/17 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
python实现多线程网页下载器
2018/04/15 Python
python 编写简单网页服务器的实例
2018/06/01 Python
python hbase读取数据发送kafka的方法
2018/12/27 Python
Python实现的对本地host127.0.0.1主机进行扫描端口功能示例
2019/02/15 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
浅析Python 抽象工厂模式的优缺点
2020/07/13 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
小学生我的梦想演讲稿
2014/08/21 职场文书
幼儿园教师自我评价
2015/03/04 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
红色经典观后感
2015/06/18 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python