作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 03:33:53 阅读 我要评论

利用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进阶教程(第二课续)第1/2页

现在你已经掌握了先进的字符串处理和相关数组概念,该是我们打开神奇的cookie魔瓶的时候了.cookie是记录访问你的站点的人的信息,它其实驻留在用户的硬盘上,即使用户已经离开你的站点,cookie在用户的硬盘上仍然>>>详细阅读


本文标题:在JavaScript中通过URL传递汉字的方法

地址:http://www.17bianji.com/kaifa2/JS/30622.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)