一、js内置编码,解码函数的介绍:

@.JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数:

unescape,decodeURI,decodeURIComponent 。

使用介绍:

escape()函数

定义和用法

1 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。

语法

escape(string)

参数 描述

string 必需。要被转义或编码的字符串。

返回值

已编码的 string 的副本。其中某些字符被替换成了十六进制的转义序列。

说明

该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。其他所有的字符都会被转义序列替换。

2 encodeURI()函数 decodeURI() 函数

定义和用法

encodeURI() 函数可把字符串作为 URI 进行编码(decodeURI解码)。

语法

encodeURI(URIstring)

参数 描述

URIstring 必需。一个字符串,含有 URI 或其他要编码的文本。

返回值

URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

说明

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#

3 encodeURIComponent() 函数/ decodeURIComponent() 函数 定义和用法

encodeURIComponent() 函数可把字符串作为 URI 组件进行编码( decodeURIComponent() 解码)。

语法

encodeURIComponent(URIstring)

参数 描述

URIstring 必需。一个字符串,含有 URI 组件或其他要编码的文本。

返回值

URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

说明

该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。

其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。

提示和注释

提示:请注意 encodeURIComponent() 函数 与 encodeURI() 函数的区别之处,前者假定它的参数是 URI 的一部分(比如协议、主机名、路径或查询字符串)。

因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号。

注意点:

1  encodeURI和decodeURI 主要用于URL(网址)的编码、解码,是JavaScript的自身函数,采用UTF-8编码格式对指定的字符串进行编码或解码

说明:

本项功能只是用于 encodeURI编码和decodeURI解码 的对照,可以识别和研究网址中被编码过的汉字。

encodeURI函数不能编码的字符:@ ~ ! @ # $ & * ( ) _ + : ? - = ; ' , . / 英文 数字

由于目前各国网页字符集的不同造成了URL编码的多种形式,例如 GBK和UTF 这2种字符集的网页中汉字URL编码方式就不一样。

encodeURI编码和decodeURI解码只能针对UTF-8字符集的网页,不能识别GBK网页编码过的汉字编码。

2  encodeURIComponent和decodeURIComponent 主要用于URL(网址)的编码、解码,是JavaScript的自身函数,

采用UTF-8编码格式对指定的字符串进行编码或解码。

与encodeURI和decodeURI的区别:

说明:

本项功能只是用于 encodeURIComponent编码和decodeURIComponent解码 的对照,可以识别和研究网址中被编码过的汉字。

encodeURIComponent函数相对于encodeURI函数来说,可以对更多的字符进行编码,

包括:@ # $ & + : ? = ; , / 等字符。

encodeURIComponent函数不能编码的字符:@ ~ ! * ( ) _ - ' . 英文 数字

由于目前各国网页字符集的不同造成了URL编码的多种形式,例如 GBK和UTF 这2种字符集的网页中汉字URL编码方式就不一样。

encodeURIComponent编码和decodeURIComponent解码只能针对UTF-8字符集的网页,不能识别GBK网页编码过的汉字编码。

总结:由上得知js再进行解码中文时,只能解码由utf-8格式编码的中文;如果解码GBK格式编码的中文,js会抛出“被解码的 URI 不是合法的编码“的异常;

网上http://blog.csdn.net/cuixiping/article/details/1723741这个博客重写了js类库中的方法,实现了解码GBK格式的中文,但是使用他的方法后解码utf-8格式的中文时会抛出同样的错。

具体解决方案有待研究,,如果有大牛已经有了解决方法,希望留言,,,,,,

js url解码gbk_decodeURI解码,由URIEncoder.encode(,GBK)编码的中文,问题解决相关推荐

  1. js url解码gbk_使用js解码gbk编码的字符串

    如下字符串为 "产后恢复肚子" %B2%FA%BA%F3%BB%D6%B8%B4%B2%D9%CA%D3%C6%B5%BD%CC%B3%CC 直接使用js的解码函数解码得到的都是乱 ...

  2. java net unicode / native2ascii / url decode / url encode / UTF8 / js url code

    s http://chengyue2007.iteye.com/blog/1852095 java中URL 的编码和解码函数 java.net.URLEncoder.encode(String s)和 ...

  3. js几种escape()解码与unescape()编码

    js几种escape()解码与unescape()编码 www.111cn.net 编辑:kepeer 来源:转载 一篇js几种escape()解码与unescape()编码函数,同时我们也和它和服务 ...

  4. URL 参数编解码详解

    下表中列出了一些URL特殊符号及编码 + URL 中+号表示空格 %2B 空格 URL中的空格可以用+号或者编码 %20 / 分隔目录和子目录 %2F ? 分隔实际的URL和参数 %3F % 指定特殊 ...

  5. unescape解密 php,php 版 模仿 js ,unescape函数解码,escape函数编码的方法

    php 版 模仿 js ,unescape函数解码,escape函数编码的方法 其实跟js 端进行编码和解码相同,而且可以通过php的这个方法直接对js返回的数据进行编码和解码,方法通用. /** * ...

  6. 解码python_Python解码

    2016.3.3部分 上手爬虫第一天,就遇到了一个麻烦的问题:解码解不出来. 先上源码: import urllib import urllib.request data = {} data['wor ...

  7. js url传值中文乱码之解决之道

    因为js url在传值的过程中使用的是js自己默认的字符集编码规则,我们必须把它转成属于我们自己的编码规格 在websphere 中使用的是url=encodeURI(encodeURI(url)); ...

  8. python解码函数_Python字符串中的两个解码与解码函数详解

    Python字符串作为计算机语言中被广泛应用的语言.很少有人知道Python字符串中有两个编码和解码的函数.以下是文章的介绍,希望你能从以下的文章中会有所收获,下面是文章的介绍. Python字符串, ...

  9. 二十六、python中字符串的编码与解码,utf-8编码与解码,gbk编码与解码

    在python中,我们经常会使用到字符串的编码与解码,推荐你在写代码的过程中都用utf-8编码解码 1.utf-8编码用函数encode,例子,编码英文跟数字的时候,他只是在前面多了个b,编码中文的时 ...

最新文章

  1. 名图怎么弄云服务器_云服务器购买了宽带的速度怎么测试?
  2. C 语言编程 — typedef 关键字
  3. vpc 网络隔离_专有网络(VPC)的六大应用场景
  4. Hello boke!
  5. 开源短地址_如何在短短5分钟内完成您的第一个开源贡献
  6. ES8新特性_async和await结合发送ajax请求---JavaScript_ECMAScript_ES6-ES11新特性工作笔记051
  7. 华为商城抢购工具_华为套路太多,MATE40RS开启摇号模式,抽中资格仍需抢购
  8. H3C | S6X00系列交换机策略路由配置案例
  9. ActiveMQ持久化方式
  10. 大数据-数据抽取(数据降维)算法
  11. centos7 设备 mariadb-10
  12. QQ默认表情消失的解决办法
  13. LFS-初入门第一篇(准备环境)
  14. 【大数据技术干货】(还不懂数仓,数据中心?看这一篇就够了!)在实际的开发生产中,让你了解企业级数据中心整体架构(DB+ETL+ODS+DW+DM)的各个层次的过程详解,数据联系及功能区分
  15. Apache-Flink深度解析-JOIN-LATERAL-Time Interval(Time-windowed)
  16. 【在PowerPoint中插入视频的三种方法】
  17. 专利学习笔记8:解决CPC签名失败问题
  18. 微信小程序双瀑布流布局+动态懒加载
  19. 期末前端web大作业:用DIV+CSS技术设计的动漫网站
  20. Golang zap 快速上手

热门文章

  1. 买票回家难?软件加速包也无用?看我用python轻松抢票回家
  2. 共享男友能提供什么服务?
  3. v4l2_field理解
  4. 汇编语言显示“*”符号图案(1)
  5. 黑客入门教程(非常详细)从零基础入门到精通
  6. 北京中职学校排名有计算机专业,北京市中职学校排名前十
  7. 使用ExecuteReader时报错“阅读器关闭时尝试调用Read无效”的解决办法
  8. 最近面试高级前端工程师的一些感受
  9. java word 写出_【转】java 读写word文档
  10. 写电子合同,爬过的坑,趟过的雷,犯过的错,都是泪