js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent
1、 传递参数时需要使用encodeURIComponent,这样组合的url才不会被#等特殊字符截断。
例如:<script language="javascript">document.write('<a href="http://passport.baidu.com/?logout&aid=7&u='+encodeURIComponent("http://cang.baidu.com/bruce42")+'">退出</a>');</script>
2、 进行url跳转时可以整体使用encodeURI
例如:Location.href=encodeURI("http://cang.baidu.com/do/s?word=百度&ct=21");
3、 js使用数据时可以使用escape
[Huoho.Com编辑]
例如:搜藏中history纪录。
4、 escape对0-255以外的unicode值进行编码时输出%u****格式,其它情况下escape,encodeURI,encodeURIComponent编码结果相同。
最多使用的应为encodeURIComponent,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,所以如果给后台传递参数需要使用encodeURIComponent时需要后台解码对utf-8支持(form中的编码方式和当前页面编码方式相同)
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
AJAX传递中文字符串时必须把中文字符串编码成unicode,一般会用到JS的自带函数escape().不过找到了更好的函数来确决中文字符转换成unicode编码的函数
function uniencode(text)
{
text = escape(text.toString()).replace(/\+/g, "%2B");
var matches = text.match(/(%([0-9A-F]{2}))/gi);
if (matches)
{
for (var matchid = 0; matchid < matches.length; matchid++)
{
var code = matches[matchid].substring(1,3);
if (parseInt(code, 16) >= 128)
{
text = text.replace(matches[matchid], '%u00' + code);
}
}
}
text = text.replace('%25', '%u0025');
return text;
}
当然服务器端要对编码过的字符串进行第二次转码.把字符串转换成UTF-8编码.
function convert_int_to_utf8($intval)
{
$intval = intval($intval);
switch ($intval)
{
// 1 byte, 7 bits
case 0:
return chr(0);
case ($intval & 0x7F):
return chr($intval);
// 2 bytes, 11 bits
case ($intval & 0x7FF):
return chr(0xC0 | (($intval >> 6) & 0x1F)) .
chr(0x80 | ($intval & 0x3F));
// 3 bytes, 16 bits
case ($intval & 0xFFFF):
return chr(0xE0 | (($intval >> 12) & 0x0F)) .
chr(0x80 | (($intval >> 6) & 0x3F)) .
chr (0x80 | ($intval & 0x3F));
// 4 bytes, 21 bits
case ($intval & 0x1FFFFF):
return chr(0xF0 | ($intval >> 18)) .
chr(0x80 | (($intval >> 12) & 0x3F)) .
chr(0x80 | (($intval >> 6) & 0x3F)) .
chr(0x80 | ($intval & 0x3F));
}
}
这样中文字符串就可以转换成UTF-8编码.这种方法适合各种服务器环境..
分享到:
相关推荐
在JavaScript中,字符串默认采用Unicode编码,但有些环境或者接口可能需要GBK编码,这就需要进行转码操作。 `u2gb.js`的实现原理通常是基于JavaScript的内置函数`charCodeAt()`,该函数可以获取字符串中指定位置...
java解码与js转码用于解决乱码问题.很好用的哦。不错的选择
这篇文章主要介绍了如何通过JS实现转码与解码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 escape 和 unescape escape()不能直接用于URL编码,它的真正作用...
万能转码函数,解决中文字符转码问题、GBK转utf8问题,utf8转gbk等等各种转码、乱码问题。
traceur-----Google出的编译器,把ES6编译成ES5。Traceur允许将ES6代码直接插入网页。首先,必须在网页头部加载Traceur库文件。
### JavaScript中的URL编码方法 在JavaScript中,有三种主要的方法用于对字符串进行URL编码:`escape()`、`encodeURI()` 和 `encodeURIComponent()`。这三种方法虽然功能相似,但适用场景和编码规则各不相同。 ###...
js/html转码工具
【七牛云实时转码技术详解】 在当前的互联网时代,多媒体内容的传输与播放已经成为日常,而视频作为其中重要的一环,其处理技术尤为重要。七牛云作为一家领先的云计算服务提供商,提供了一整套完善的视频处理解决...
JavaScript(简称js)作为浏览器端常用的编程语言,能够方便地实现二维码的生成。在处理包含中文字符的二维码时,由于编码问题,我们需要进行中文转码以确保信息正确显示。本文将详细探讨“js二维码生成”以及“中文...
本文将深入探讨如何使用JavaScript(简称JS)来解码这些URL编码,使其转换回原本的中文或其他非英文字符。 ### URL编码与解码原理 URL编码的主要目的是确保URL中的所有字符都能在网络上传输,避免因特殊字符导致的...
用JavaScript脚本在网页实现的中文Unicode码转换
JavaScript (.js) Java (.java) C/C++ (.c, .cpp, .h) HTML (.html, .htm) CSS (.css) 其他编程语言的源代码文件 配置文件 JSON (.json) YAML (.yaml, .yml) XML (.xml) INI (.ini) Properties (.properties) 脚本...
处理emoji表情 js unicode转码解码方法封装类,自己项目中使用的东西 处理emoji表情 js unicode转码解码方法封装类,自己项目中使用的东西
根据给定的信息,本文将详细解释“js字符集转码函数”的相关内容,包括函数的作用、原理及使用方法。 ### js字符集转码函数概述 在Web开发中,字符集编码是一个重要的概念。不同的系统和软件可能采用不同的字符集...
本文将深入探讨如何使用JavaScript(JS)实现视频转码,以适应网页播放的需求。 标题"视频格式转码源码"表明我们要讨论的是一个利用编程语言进行的视频编码转换过程,而在这个案例中,我们使用的编程语言是...
### JavaScript中的Base64编码与解码 #### 一、Base64编码简介 Base64是一种基于64个字符的编码方式,被广泛应用于电子邮件、网页和其他需要将二进制数据转换为文本格式的场景中。由于互联网传输的数据通常需要以...
### JSP中JS传递与解析URL参数及中文转码解码问题详解 #### 一、引言 在Web开发中,尤其是使用Java Server Pages (JSP)进行开发时,经常需要处理URL中的参数,包括参数的传递、解析以及对中文等特殊字符的处理。...
在这个"js base46转码、保存图片到本地、img显示本地图片.zip"的压缩包中,我们聚焦于JavaScript处理图像的一些核心功能,包括Base64编码、在页面上显示本地图片以及将图片保存到用户本地。下面,我们将深入探讨这些...
1. **预处理器**:这部分代码可能包含一个预处理器,用于将标准的JavaScript、HTML或CSS转换为WXML、WXSS和符合微信小程序规范的JS。预处理器的任务是解析原始代码,添加必要的标记,以便微信小程序引擎能够正确解析...
在JavaScript的世界里,随着ES6(ECMAScript 2015)的引入,开发者们享受到了诸多新特性带来的便利,如箭头函数、类、模板字符串等。然而,由于浏览器对ES6的支持程度不一,为了确保代码能在广泛使用的环境中运行,...