在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 Form 页面表单提交的小例子
Nov 15 Javascript
js charAt的使用示例
Feb 18 Javascript
JavaScript实现存储HTML字符串示例
Apr 21 Javascript
jQuery实现高亮显示的方法
Mar 10 Javascript
javascript中if和switch,==和===详解
Jul 30 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 Javascript
JS实现获取剪贴板内容的方法
Jun 21 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
javascript数组定义的几种方法
Oct 06 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
Aug 13 Javascript
深入浅析javascript函数中with
Oct 28 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 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命名空间(Namespace)的使用详解
2013/05/04 PHP
PHP获取Exif缩略图的方法
2015/07/13 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
在jQuery ajax中按钮button和submit的区别分析
2012/10/07 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
React中的refs的使用教程
2018/02/13 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
Python生成随机数的方法
2014/01/14 Python
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
详解Python中where()函数的用法
2018/03/27 Python
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python匿名函数及应用示例
2019/04/09 Python
Windows系统Python直接调用C++ DLL的方法
2019/08/01 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
python 图像增强算法实现详解
2021/01/24 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
跑步爱好者一站式服务网站:Jack Rabbit
2016/09/01 全球购物
一套Delphi的笔试题一
2016/02/14 面试题
三年级科学教学反思
2014/01/29 职场文书
企业环保标语
2014/06/10 职场文书
启动仪式策划方案
2014/06/14 职场文书
班子四风对照检查材料
2014/08/21 职场文书
入党积极分子学习党的纲领思想汇报
2014/09/13 职场文书
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
一文搞懂Java中的注解和反射
2022/06/21 Java/Android