`

js 三种编码格式及区别

阅读更多

js 三种编码格式及区别:

 

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编码.这种方法适合各种服务器环境..

 

分享到:
评论

相关推荐

    JS邮政编码验证

    JS 邮政编码验证是指通过 JavaScript 语言来验证邮政编码的正确性,确保用户输入的邮编符合一定的格式和规则。本文将详细介绍 JS 邮政编码验证的实现方法和相关知识点。 一、邮政编码的格式和规则 邮政编码是指...

    js格式化排版工具, 反向js压缩编码

    JavaScript(简称JS)是一种广泛用于网页和网络应用的编程语言,尤其在前端开发中起着核心作用。然而,为了提高页面加载速度和节省网络带宽,开发者通常会使用压缩工具对JS代码进行压缩,这使得代码变得难以阅读。...

    js编码的学习

    js编码的学习 js编码的学习 js编码的学习 js编码的学习 js编码的学习 js编码的学习

    javascript 判断是否GBK编码

    在JavaScript中,判断一个字符串是否属于GBK编码是一个常见的需求,特别是在处理中文字符集时。GBK是GB2312的扩展,包含了更多的汉字和其他字符,是Windows系统中广泛使用的中文编码标准。本篇将深入探讨如何通过...

    JS实现URL编码转换中文

    由于URL传输限制及浏览器解析原因,中文等非ASCII字符需要被编码为特定格式才能在网络上传输。本文将详细介绍如何使用JavaScript进行URL编码转换,并提供一个具体的示例来帮助理解这一过程。 #### 一、URL编码基础...

    JavaScript程序编码规范.pdf

    ### JavaScript程序编码规范 #### 一、概述 《JavaScript程序编码规范》是一份旨在提高JavaScript代码质量和可维护性的指南。该规范由Douglas Crockford编写,并由cloudwater翻译成中文版。Crockford是一位著名的...

    js技巧 javaScript编码技巧

    本文将深入探讨一些JS编码技巧,帮助开发者提升网站特效的实现能力。 一、变量与数据类型 在JavaScript中,变量声明通常使用`var`、`let`或`const`关键字。理解其作用域和生命周期至关重要。`var`具有函数作用域,...

    Node.js-iconv-lite-纯javascript转换字符编码

    在处理文本时,尤其是涉及不同编码格式的数据,Node.js 提供了丰富的库来支持,其中 `iconv-lite` 就是一个非常重要的角色。 `iconv-lite` 是一个纯 JavaScript 实现的字符编码转换库,它不需要任何 C++ 扩展,因此...

    js base64编码格式图片另存为下载

    在JavaScript(JS)中,Base64是一种常用的编码方式,用于将二进制数据转换成ASCII字符串,便于在网络上传输。在前端开发中,我们有时会遇到需要将Base64编码的图片保存或下载到本地的情况。这个过程涉及到浏览器的...

    js实现GBK编码,避免默认utf-8编码

    前端页面通过ajax发送请求,参数都是默认使用utf-8编码格式对参数进行url编码,这样的后果就是,当后台页面如果使用gbk编码的话,会出现乱码的情况,然后网上找到一个大神写的gbk.js. 但是里面没有做出详细介绍,这里...

    base62.js, node.js的javascript Base62编码/解码器.zip

    base62.js, node.js的javascript Base62编码/解码器 Base62.js JavaScript Base62编码/解码器什么是Base62编码?Base62编码将数字转换为ASCII字符串( 0 -9,一个z 和一个z ),反之亦然,这通常会导致比较短的字符串...

    js gb2312编码

    在JavaScript(js)编程语言中,GB2312编码是一种早期的中文字符编码标准,主要应用于简体中文环境。GB2312编码表包含了6763个常用汉字和一些其他符号,为中文信息处理提供了基础。然而,在网络传输和处理中,由于GB...

    java和js相互base64编码解码

    在Java和JavaScript中,Base64编码和解码是两个重要的功能,用于处理这种编码格式。下面将详细阐述这两个编程语言中实现Base64编码和解码的方法。 首先,让我们关注Java。在Java 8及更高版本中,已经内置了`java....

    JS中三种编码方式(escape,encodeURI,encodeURIComponent)

    在JavaScript(JS)中,对字符串进行...总之,理解这三种编码方法的区别对于编写健壮的JavaScript代码至关重要,特别是在处理跨域请求、URL构建和数据序列化时。正确选择编码函数能避免数据丢失、解析错误和安全问题。

    js实现GBK编码

    JavaScript(简称JS)是一种广泛应用于Web开发的轻量级脚本语言,主要用于客户端的网页交互。在处理中文字符集时,我们经常会遇到编码问题,尤其是当服务器与客户端使用不同的字符编码标准时,如GBK(国标扩展编码)...

    js实现GBK编码,解决乱码

    在JavaScript(JS)环境中,GBK编码是一种常见的汉字编码标准,特别是在一些旧的或者不支持Unicode的系统中。GBK编码是GB2312编码的扩展,包含更多的汉字和符号,但与Unicode不兼容,因此在处理GBK编码时需要特别...

    js对中文字符串进行gb2312编码解码

    在JavaScript(JS)中,处理中文字符编码是一个常见的需求,特别是在与服务器交互或者处理文本数据时。GB2312编码是一种在中国大陆广泛使用的简体中文字符集,它包含了6763个常用汉字和一些其他字符。在JavaScript中...

    js实现base32编码

    Base32编码的主要目的是将二进制数据转化为一种更安全、更便于在网络上传输的格式,尤其是在面对URL、电子邮件等对特殊字符有限制的场景时。 Base32编码的基本原理是将输入的二进制数据按照每5个比特为一组进行处理...

Global site tag (gtag.js) - Google Analytics