JavaScript字符集编码与解码

一、字符集

1)字符与字节(Character)

字符是各种文字和符号的总称,包括乱码;一个字符对应1~n个字节,一字节对应8位,每位用0或1表示。

2)字符集(Character Set)

字符集是多个字符的集合,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、Unicode字符集等。

3)字符集编码(Character Encoding)

字符集编码就是将符号转换为计算机可读的二进制,解码就是把二进制转换为人类可读的符号。

字符集大多对应一种编码方式(例如GBK对应GBK编码),但Unicode编码有多种,包括UTF-8、UTF-16、UTF-32和UTF-7。

目前网页用的最多的就是“UTF-8”,UTF-8使用一至四个字节为每个字符编码,是ASCII的一个超集,所以现存的ASCII文本不需要转换

二、浏览器进制

1)HTML属性中使用十进制和十六进制

十进制在HTML中可使用“8”,十六进制,则使用“Z”,比十进制多了个x,进制码中也多了a~f这6个字符来表示10~15。

2)CSS属性中使用十进制和十六进制

CSS兼容HTML的进制形式,除此之外,十六进制还可以使用“\6c”的形式来表示。

3)JavaScript编码封装

可以直接通过eval执行字符串八进制和十六进制两种编码方式,其中八进制用“\56”表示,十六进制用“\x5c”表示。

如果代码中应用了汉字并且需要进行进制编码,那么只能进行十六进制Unicode编码,其表示形式为:“\u4ee3\u7801”。

在“Web前端黑客技术揭秘”中经封装了两个方法来做编码和解码,主要用到了下面两个方法,具体代码可查看此处

核心代码是:“str.charCodeAt(char).toString(进制)”与“String.fromCharCode(parseInt(code,进制))

charCodeAt()方法返回0到65535之间的整数,表示给定索引处的UTF-16代码单元

静态String.fromCharCode()方法返回使用指定的Unicode值序列创建的字符串。

还可以通过一个在线网页进行编码解码“MonyerJS”。

4)HTML自动解码机制

例如在网页中输入16进制的“Hello”,自动就会解码为“hello”。

还有一些比较熟知的空格“ ”也是这种机制。

三、浏览器编码

JavaScript中有三对可以对字符串编码解码的函数,分别是:

escape/unescape、encodeURI/decodeURI、encodeURIComponent/decodeURIComponent。

主要的区别还是不编码的字符个数。

1)escape不编码的字符有69个

*、+、-、.、/、@、_、0~9、a~z、A~Z而且escape对0~255以外的unicode值进行编码时输出%u****格式。

2)encodeURI不编码的字符有82个

!、#、$、&、‘、(、)、*、+、,、-、.、/、:、;、=、?、@、_、~、0~9、a~z、A~Z

 

3)encodeURIComponent不编码的字符有71个

!、‘、(、)、*、-、.、_、~、0~9、a~z、A~Z

参考资料:

字符集和字符编码(Charset & Encoding)

浏览器的进制常识

时间: 2024-08-01 22:45:29

JavaScript字符集编码与解码的相关文章

转: Javascript Base64编码与解码

Javascript Base64编码与解码 分类:            JavaScript            2015-02-04 14:25    212人阅读    评论(0)    收藏    举报 转自:http://blog.csdn.net/yanzhibo/article/details/20079943 [javascript] view plaincopy <html> <head> <META HTTP-EQUIV="MSThemeCo

Javascript Base64编码与解码

原文:[转]Javascript Base64编码与解码 <html> <head> <META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes"> <meta http-equiv="Content-Type" content="text/html; charset=unicode"> <script language="

Javascript编码与解码函数

Javascript编码与解码 在javascript中编码和解码主要有6个函数,这几个函数在解决前台传中文字符给后台,以及解决乱码问题很有帮助.下面一一介绍.(为了不以讹传讹请自己验证) 1.编码函数:escape(),对应的解码函数:unescape(),基本不用了. escape(charString),charstring 参数是要编码的任意 String 对象或文字. 说明 escape 方法返回一个包含了 charstring 内容的字符串值(Unicode 格式). escape不

了解URL编码的基本概念,在javascript和java程序中使用内置的API进行编码和解码

1.URL编码的基本概念 URL只能使用US-ASCII 字符集来通过因特网进行发送.由于URL常常会包含 ASCII 集合之外的字符,URL必须转换为有效的 ASCII 格式.URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符.URL 不能包含空格,URL 编码通常使用 + 来替换空格.所谓URL编码,就是将非US-ASCII字符和US-ASCII中的特殊字符,用相应的字符集编码来表示.比如,汉字"你",如果用UTF-8编码,出现在URL

【js与jquery】javascript中url编码与解码

本文主要针对URI编解码的相关问题做了介绍,对Url编码中哪些字符需要编码.为什么需要编码做了详细的说明,并对比分析了Javascript 中和 编解码相关的几对函数 编码/解码 escape / unescape, encodeURI / decodeURI, encodeURIComponent / decodeURIComponent. [js与jquery]javascript中url编码与解码,布布扣,bubuko.com

JavaScript: 详解Base64编码和解码

转载自:http://my.oschina.net/goal/blog/201032#OSC_h2_11 摘要 Base64是最常用的编码之一,比如开发中用于传递参数.现代浏览器中的<img />标签直接通过Base64字符串来渲染图片以及用于邮件中等等.Base64编码在RFC2045中定义,它被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式. JavaScript Base64 Unicode UTF16 UTF8 编码 目录[-] 字符编码

JavaScript进行UTF-8编码与解码

JavaScript本身可通过charCodeAt方法得到一个字符的Unicode编码,并通过fromCharCode方法将Unicode编码转换成对应字符. 但charCodeAt方法得到的应该是一个16位的整数,每个字符占用两字节.在网络上传输一般采用UTF-8编码,JavaScript本身没有提供此类方法.不过有一个简便的办法来实现UTF-8的编码与解码. Web要求URL的查询字符串采用UTF-8编码,对于一些特殊字符或者中文等,会编码成多个字节,变成%加相应16进制码的形式.比如:汉字

javascript对url进行编码和解码

这里总结下JavaScript对URL进行编码和解码的三个方法. 为什么要对URL进行编码和解码 只有[0-9[a-Z] $ - _ . + ! * ' ( ) ,]以及某些保留字,才能不经过编码直接用于URL,其他的字符如果不经过编码可能会导致各种各样的问题. 很容易找到编码和解码的例子,比如在搜索引擎搜索的中文关键字,复制网址之后再粘贴会发现该URL已经被转码. escape()和unescape() 原理:对除ASCII字母.数字.标点符号[@  *  _  +  -  .  /]以外的其

http协议中的编码和解码

http://www.csdn1 2 3.com/html/itweb/20130730/29422_29378_29408.htm ****************************** 一.字符集与文字编码简介 1. 计算机如何显示文字 我们知道,计算机是以二进制的“形式”来保存和处理数据的,也 就是说,不管我们使用键盘进行输入,还是让计算机去读取一个文本文件,计算机得到的原始内容是一些二进制序列,当需要对这些二进制序列进行显示时,计算机 会依照某种“翻译机制”(也就是编码方式),取到