在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 相关文章推荐
13个绚丽的Jquery 界面设计网站推荐
Sep 28 Javascript
JS保存、读取、换行、转Json报错处理方法
Jun 14 Javascript
一个JavaScript函数把URL参数解析成Json对象
Sep 24 Javascript
JavaScript数据存储 Cookie篇
Jul 02 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
Aug 23 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
Jan 10 Javascript
Vue.js学习示例分享
Feb 05 Javascript
Vue的Class与Style绑定的方法
Sep 01 Javascript
vue实现tab切换外加样式切换方法
Mar 16 Javascript
Vue插件从封装到发布的完整步骤记录
Feb 28 Javascript
浅谈Angular单元测试总结
Mar 22 Javascript
基于vue实现图片验证码倒计时60s功能
Dec 10 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生成便于打印的网页
2006/10/09 PHP
iis6+javascript Add an Extension File
2007/06/13 Javascript
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
2013/02/25 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
jQuery操作dom实现弹出页面遮罩层(web端和移动端阻止遮罩层的滑动)
2016/08/25 Javascript
微信公众号 摇一摇周边功能开发
2016/12/08 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
2017/01/17 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
用python读写excel的方法
2014/11/18 Python
简单介绍Python中的round()方法
2015/05/15 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
机器学习python实战之决策树
2017/11/01 Python
python 遍历目录(包括子目录)下所有文件的实例
2018/07/11 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
2020/04/08 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
Java和Javasciprt的区别
2012/09/02 面试题
土木工程毕业生自荐信
2013/09/21 职场文书
资料员岗位职责
2013/11/17 职场文书
建筑工程管理专业自荐信范文
2013/12/28 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
12岁生日演讲稿
2014/05/14 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
会计专业求职信范文
2015/03/19 职场文书
搞笑欢迎词大全
2015/09/30 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
本地搭建minio文件服务器(使用bat脚本启动)的方法
2022/07/15 Servers