解决url或get方式传递中文参数时候,乱码问题。
格式:escape(中文字符串)
url时候需要escape 2次,因为浏览器会解一次码。
get方式提交form只需要一次。
var searchCityName=escape(escape(searchCityName)); var url="http://xxx?add="+searchCityName; window.location.href=url;
结果:
地址栏:http://xxx?add=%25u4E2D%25u56FD%253A%25u5E7F%25u4E1C%25u7701%253A%25u4E1C%25u839E%25u5E02
java服务端:%u4E2D%u56FD%3A%u5E7F%u4E1C%u7701%3A%u4E1C%u839E%u5E02
说明浏览器转了一次。
var value=escape(value); jQuery("#add").val(value); jQuery('#searchForm').submit(); html: <form id="searchForm" name="searchForm" method="get" action="$url"> <input type="hidden" name="add" id="add" value="$!addEscape" /> </form>
结果:页面/java服务端:%u4E2D%u56FD%3A%u5E7F%u4E1C%u7701%3A%u4E1C%u839E%u5E02
String add = StringUtils.unescape(request.getParameter("add")); /** * javascript unescape()的java实现 */ public static String unescape(String s) { StringBuffer sbuf = new StringBuffer(); int i = 0; int len = s.length(); while (i < len) { int ch = s.charAt(i); if (ch == '+') { // + : map to ' ' sbuf.append(' '); } else if ('A' <= ch && ch <= 'Z') { // 'A'..'Z' : as it was sbuf.append((char) ch); } else if ('a' <= ch && ch <= 'z') { // 'a'..'z' : as it was sbuf.append((char) ch); } else if ('0' <= ch && ch <= '9') { // '0'..'9' : as it was sbuf.append((char) ch); } else if (ch == '-' || ch == '_' // unreserved : as it was || ch == '.' || ch == '!' || ch == '~' || ch == '*' || ch == '\'' || ch == '(' || ch == ')') { sbuf.append((char) ch); } else if (ch == '%') { int cint = 0; if ((i+2)<len && 'u' != s.charAt(i+1)) { // %XX : map to ascii(XX) cint = (cint << 4) | val[s.charAt(i+1)]; cint = (cint << 4) | val[s.charAt(i+2)]; i+=2; } else { if(i+5<len){ // %uXXXX : map to unicode(XXXX) cint = (cint << 4) | val[s.charAt(i+2)]; cint = (cint << 4) | val[s.charAt(i+3)]; cint = (cint << 4) | val[s.charAt(i+4)]; cint = (cint << 4) | val[s.charAt(i+5)]; i+=5; }else{ return s; } } sbuf.append((char)cint); } i++; } return sbuf.toString(); } /** * javascript escape()的java实现 */ public static String escape(String s) { StringBuffer sbuf = new StringBuffer(); int len = s.length(); for (int i = 0; i < len; i++) { int ch = s.charAt(i); if (ch == ' ') { // space : map to '+' sbuf.append('+'); } else if ('A' <= ch && ch <= 'Z') { // 'A'..'Z' : as it was sbuf.append((char) ch); } else if ('a' <= ch && ch <= 'z') { // 'a'..'z' : as it was sbuf.append((char) ch); } else if ('0' <= ch && ch <= '9') { // '0'..'9' : as it was sbuf.append((char) ch); } else if (ch == '-' || ch == '_' // unreserved : as it was || ch == '.' || ch == '!' || ch == '~' || ch == '*' || ch == '\'' || ch == '(' || ch == ')') { sbuf.append((char) ch); } else if (ch <= 0x007F) { // other ASCII : map to %XX sbuf.append('%'); sbuf.append(hex[ch]); } else { // unicode : map to %uXXXX sbuf.append('%'); sbuf.append('u'); sbuf.append(hex[(ch >>> 8)]); sbuf.append(hex[(0x00FF & ch)]); } } return sbuf.toString(); }
escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。语法escape(string)参数描述string必需。要被转义或编码的字符串。返回值已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。说明该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。
提示和注释提示:可以使用 unescape() 对 escape() 编码的字符串进行解码。注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。
相关推荐
了解这些基本概念和实践技巧后,开发者可以更有效地解决JavaScript中的中文乱码问题,无论是使用`escape`和`unescape`,还是选择更适合的URI编码方法。同时,关注相关的技术文章和社区讨论,可以帮助持续学习和掌握...
本文将深入探讨如何使用"escape"函数以及相关的编码策略来解决AJAX和JS传中文乱码的问题。 首先,我们需要理解AJAX(异步JavaScript和XML)的工作原理。AJAX允许网页在不重新加载整个页面的情况下与服务器交换数据...
本文实例讲述了escape函数解决js中ajax传递中文出现乱码问题,分享给大家供大家参考。具体方法如下: 一、问题描述: 本来网页特效中的escape()是将中文按iso-8859-1字符集进行url编码的,那样通过 request....
escape函数可以对传入的字符串进行转义编码,但它不适合对URL进行编码。unescape函数可以对转义编码的字符串进行解码。 2. encodeURI/decodeURI函数 encodeURI函数可以对整个URL进行编码,而decodeURI函数可以对...
### jQuery + ASP AJAX 中文乱码问题解决方案 在开发基于jQuery和ASP的Web应用程序时,中文乱码问题可能成为困扰开发者的一大难题。特别是在使用Ajax进行前后端数据交互时,中文字符可能会出现乱码现象,影响用户...
总之,`escape`和`unescape`是JavaScript中处理字符串编码解码的两个基本工具,它们在特定场景下能帮助我们解决中文乱码问题。但在现代Web开发中,考虑到兼容性和效率,我们通常会使用更专业的方法来处理字符串编码...
本文将介绍几种解决Java中中文乱码的方法,希望能对您有所帮助。 #### 方法一:转换请求参数编码 在Java Web开发中,客户端通过HTTP请求向服务器传递数据时,如果数据中有中文字符,很容易出现乱码问题。这是因为...
4. JavaScript中传递URL参数的中文内容需使用`escape`函数。 5. 存储UTF-8编码的中文内容到SQL Server时,字段类型应为`NVARCHAR`,插入时在值前加上`N`,如`INSERT INTO user (name) VALUES (N'&username&')`。 在...
总的来说,解决`escape`和`unescape`处理汉字乱码问题的关键在于理解和维护字符编码的正确性,以及合理使用JavaScript提供的字符串编码和解码函数。通过确保整个流程中编码的统一性和正确性,可以避免乱码的出现。
在Asp.Net开发中,遇到页面通过URL参数传递中文字符时出现乱码是...以上就是解决Asp.Net页面通过URL参数传递中文乱码问题的详细方法,通过选择合适的方法或组合使用这些方法,可以确保中文字符在URL中正确无误地传递。
本文将深入探讨Ajax中文乱码问题的原因及其解决方案。 首先,我们需要理解Ajax乱码的根源。当JavaScript发送HTTP请求时,如果服务器和客户端之间关于字符编码的约定不一致,就会导致乱码。常见的原因包括: 1. **...
通过上述代码,我们可以看到使用`encodeURIComponent()`函数可以确保URL中的中文字符被正确编码,从而避免了乱码问题的发生。 总之,在实际开发中,根据不同的需求选择合适的编码函数是非常重要的。通过正确使用...
escape函数主要用于对字符串进行编码,确保字符串在不同环境下传输或显示时不会出现问题。在PHP中,escape函数常用于URL编码,即把字符串转换为百分号编码(percent-encoded),以确保在URL中的有效性和安全性。 ...
在Asp中使用JQuery的AJAX提交中文乱码解决方法主要是在客户端使用escape()函数编码中文字符,而在服务器端使用VbsEscape()和VbsUnEscape()函数来编码和解码中文字符。通过这种方法,可以避免中文乱码问题,实现正确...
在`url`参数中,我们使用`escape()`函数对中文参数进行了编码,以确保它们在网络传输过程中保持正确格式。 编码过程如下: ```javascript url: "ajaxpage.aspx?t=smrz&name=" + escape(name) + "&zjtype=" + ...
当我们在Web开发中遇到URL地址栏传递中文参数出现乱码的问题时,一个常见的解决办法是使用JavaScript中的escape函数进行转码。这个函数能够将字符串中的中文字符转换为一个十六进制形式的URL编码字符串。在某些...
以下将详细分析并解决PHP向MySQL插入中文乱码问题,以及如何正确处理PHP文件内容写入数据库。 首先,我们需要确保数据库的编码设置正确。MySQL数据库通常使用UTF-8编码,因此创建数据库和表时应指定`CHARACTER SET ...