在JavaScript中通过URL传递汉字的方法

李豹80

李豹80

2016-02-19 10:06

有了下面这个在JavaScript中通过URL传递汉字的方法教程,不懂在JavaScript中通过URL传递汉字的方法的也能装懂了,赶紧get起来装逼一下吧!
利用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); 
    } 
}
展开更多 50%)
分享

猜你喜欢

在JavaScript中通过URL传递汉字的方法

Web开发
在JavaScript中通过URL传递汉字的方法

javascript静态的url如何传递

Web开发
javascript静态的url如何传递

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

通过地址栏传递参数.通过url传递参数

ASP
通过地址栏传递参数.通过url传递参数

JavaScript静态页面值传递:URL篇

Web开发
JavaScript静态页面值传递:URL篇

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

js文件封装javascript在html中获取url参数

Web开发
js文件封装javascript在html中获取url参数

url传递中文的解决方案

电脑网络
url传递中文的解决方案

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

基于malloc与free函数的实现代码及分析

基于malloc与free函数的实现代码及分析

好用的AJAX类代码分享

好用的AJAX类代码分享
下拉加载更多内容 ↓