一、ASCII 码
ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准。ASCII 码可以用来表示大小写英文字母、数字和一些符号,到目前为止共定义了128个字符。
js字符串和 ASCII码的互相转换
// js字符串转 ASCII码
var n = str.charCodeAt(i);
// ASCII码转js字符串
var str = String.fromCharCode(n);
二、Unicode 字符集
不同的国家有不同的语言,显然只用 128 个 ASCII 码来表示是存在很大的局限性,为了统一所有文字的编码,Unicode应运而生。Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了。
Unicode(又称统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
1. 一个 Unicode 字符的组成
一个 Unicode 字符,通常由“U+”然后紧接着一组十六进制的数字组成。
在基本多文种平面(简写 BMP,又简称为“零号平面”)里的所有字符,要用四位十六进制数(例如U+4AE0,共支持六万多个字符);在零号平面以外的字符则需要使用五位或六位十六进制数了。
2. Unicode 在 JavaScript 中的使用 - Unicode 转义序列
在有些老旧的计算机硬件和软件里,无法显示或输入 Unicode 字符全集,为了支持那些硬件和软件,JavaScript 定义了一种特殊序列,使用6个 ASCII 字符来代表任意16位 Unicode 内码,这些 Unicode 转义序列均以 \u 为前缀,其后跟随4个十六进制数(例如 \u4e00)。
3. js字符串和 Unicode 的相互转换
js字符串转 Unicode
charCodeAt 获取到的是十进制的 ASCII 码,用 toString(16) 转成十六进制,再加上各种场景不同的前缀就是完整的 Unicode 码。
// js字符串转Unicode
function encodeUnicode(str) {
var res = [];
for ( var i=0; i<str.length; i++ ) {
res[i] = ( "00" + str.charCodeAt(i).toString(16) ).slice(-4);
}
return "\\u" + res.join("\\u");
}
Unicode 转js字符串
方法一:Unicode直接可以在js字符串中使用,网页渲染时会自动显示对应的字符。
方法二:用 decodeURI(Unicode) 方法。
4. Unicode 官网的使用
Unicode 官网列出了很多特殊符号和表情的 Unicode 编码,平时用 js 开发业务的时候去官网找表情和图标也是一种不错的选择。
把 Unicode 的 U+ 替换成 \u 就能在 js 字符串中使用了。