JS中编码操作

常见的网页设计编码:Unicode的UCS-2 UCS-4 UTF-8 UTF-16 UTF-32以及ASCII和ANSI。

要知道JS最初定稿时使用的编码是UCS-2(因为那时候还没UTF-16,本质:UTF-16就是对UCS-2的扩展,前面的65536个字符就是UCS-2本身,后面的一直到10FFFF编号的字符是UTF-16新增的字符集),后来的ES6标准中加入了对UTF-16的支持。

题外话:现在已经没有UCS编码了,UCS的组织是ISO(国际标准化组织),而Unicode是多个多语言软件公司组成的一个组织,他们最后都同意整合各自的编码规则使世界字符编码规则趋于统一。最后的统一世界编码的项目名便是Unicode,UCS-2是旧时对65536个字符的统一编码的解决方案,而UCS-4是对到10FFFF编号的字符解决方案,UTF-32就是UCS-4(始终用4字节来存储字符),变了个新名字而已。UTF-8和16有对应的各自编码转换规则,这里就不说了。GBK的话就是编码序号对应每个汉字(一对一查表,无法通过计算获取对应字符,是地方语言编码规则,仅限在中国大陆使用),无对应的转换规则可用。再说一下UTF-16代理对的含义,在UTF-16中为了要表示剩下的16个平面字符(UTF-16范围是到10FFFF为止的,共17个平面),在基本平面的D800~DFFF这些码点设为代理,一共可以代理1024的平方个,正好是剩下的16个平面的范围。另外,如果出现ANSI的编码,说明该编码从ASCII扩展过来,比如你在中文操作系统中,在ASCII编码的文件中输入了汉字(即超出ASCII范围的字符)那么ASCII自动扩展为ANSI,在这里即GBK,如果是繁体中文操作系统那么ANSI即BIG5。

以下有"-ES6"标记的函数是ES6标准新加进来的。

String.fromCodePoint(十进制的utf-16); -ES6 //返回基本数据类型,字符串

String.fromCharCode(十进制的UCS-2); //返回基本数据类型,字符串

stringObj.charAt(index); //返回基本数据类型,字符串

stringObj.charCodeAt(index); //返回十进制的该字符UCS-2值

stringObj.codePointAt(index); -ES6 //返回十进制的UTF-16值,然后该Index不是代理对直接返回这个字符UTF-16值

stringObj.at(index); -ES6 //对UTF-16字符的charAt()实现

\u{....} 用来表示UTF-16字符的Unicode引用

/..../u 用来向正则表达式说明该模式编码为UTF-16

附一个UTF-8转码范围表:

Unicode范围:位数:UTF-8字节:备注:
0000~007F0~70XXX XXXX1标准ASCII码
0080~07FF8~11110X XXXX 10XX XXXX {1}2除东亚的基本世界字符(东亚字符占世界所有字符的70%)
0800~FFFF12~161110 XXXX 10XX XXXX {2}
3基本平面:0~FFFF
1 0000~1F FFFF17~211111 0XXX 10XX XXXX {3}
4Unicode6.1定义的范围:0~10 FFFF(1 16个平面)
20 0000~3FF FFFF22~261111 10XX 10XX XXXX {4}
5 
400 0000~7FFF FFFF27~311111 110X 10XX XXXX {5}6通用字符集的极限

 

字符串"a我易":

UTF-8:(61)( E6 88 91)( E6 98 93)

UTF-8 BOM:(EF BB BF)( 61)( E6 88 91)( E6 98 93)

ANSI(GBK):(61)( CE D2)( D2 D7)

UCS-2:(FF FE)( 61 00)( 11 62)( 13 66)

UCS-2 BE:(FE FF)( 00 61)( 62 11)( 66 13)

UTF-16:(FF FE)( 61 00)( 11 62)( 13 66)

UTF-16 BE:(FE FF)( 00 61)( 62 11)( 66 13)

UTF-32:(FF FE 00 00)( 61 00 00 00 )(11 62 00 00 )(13 66 00 00)

UTF-32 BE:(00 00 FE FF)( 00 00 00 61 )(00 00 62 11)( 00 00 66 13)

字符串"a我\u{1D306}",其中\u{1D306}是一个非基本平面的字符,该字符为:?(有些浏览器可能不支持显示该字符,正常显示的话,该字符类似汉字“三”多一横)

UTF-8:(61)( E6 88 91)( F0 9D 8C 86)

UTF-16:(FF FE )(61 00 )(11 62 )(34 D8 06 DF)

UTF-32:(FF FE 00 00)( 61 00 00 00)( 11 62 00 00)( 06 D3 01 00)

 


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/361615.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Commons IO教程:初学者指南

Apache Commons IO是由Apache Foundation创建和维护的Java库。 它提供了许多类,使开发人员可以轻松地完成常见任务,并且减少样板代码 ,而每个项目都需要一遍又一遍地编写此类库的重要性是巨大的,因为它们已经成熟由经验丰富的开发…

MyEclipse 10优化技巧

MyEclipse 10优化速度方案仍然主要有这么几个方面:去除无需加载的模块、取消冗余的配置、去除不必要的检查、关闭更新。第一步: 去除不需要加载的模块一个系统20%的功能往往能够满足80%的需求,MyEclipse也不例外,我们在大多数时候只需要20%的…

为什么应该避免JSF

长期以来,对我来说,JSF只是另一个我不太在乎的Web框架。 这改变了。 在被迫使用了几个月之后,我认为在几乎所有情况下,这都是重大的项目风险。 在这里,我提出此判决的理由。 UI和处理逻辑的纠缠不清。 官方教程声称以…

HTML知识点总结之img、scirpt、link标签

<img>元素 使用<img>可以在网页插入一个图片&#xff0c;但实际上<img>标签并不会在网页中直接插入图像&#xff0c;而是从网页上链接图像。 <img>的主要属性 &#xff08;1&#xff09;src属性&#xff1a;图片的路径。 &#xff08;2&#xff09;alt…

更多 Kinect for Windows 项目揭示

虽然Kinect for Windows的发布不过才过去一个月而已&#xff0c;但是到目前为止这个Xbox 360游戏设备辅助产品似乎已经赶上了一些商业企业项目了。其中包括一个让机器人自动购物车成为现实的项目。在Microsoft Power and Utilities博客 的一篇博文中&#xff0c;微软列举了一些…

CSS3的常用属性(一)

选择器 属性选择器&#xff08;通过标签属性来选择&#xff09; E[attr]&#xff1a; 表示只要元素<E>存在属性attr就能被选中 如&#xff1a; div[class]E[attrval]&#xff1a; 表示元素<E>存在属性attr的值等于val&#xff0c;即可被选中 如&#xff1a; di…

问题集锦

1、viewpager 用到了ViewPager&#xff0c;Android5.0.1&#xff0c;却额外在Build Path中引入了v4jar包&#xff0c;并且在“Order and Export”中勾选了此jar包&#xff0c;编译时出现错误&#xff1a; [2014-09-28 23:49:30 - Dex Loader] Unable to execute dex: Multiple …

ImageField,FileField上传文件命名问题

django 的models.ImageFiled,FileField有属性upload_to&#xff0c;该属性是指定将文件上传到服务器的位置&#xff0c;及存储在哪个文件夹下&#xff0c;你可以很方便甚至很少的代码就可以实现文件上传操作了。 但是默认的存储的文件名是没有改变的&#xff0c;也就是说所存储…

Spring靴子战争包装

Spring Boot建议在构建期间使用嵌入式容器&#xff08;tomcat或码头&#xff09;创建一个可执行jar&#xff0c;并在运行时将此可执行jar作为独立进程使用。 但是&#xff0c;通常将应用程序部署到外部容器上是很常见的&#xff0c;Spring Boot提供了打包应用程序的方式&#x…

递归函数

递归函数实在一个函数通过名字调用自身的情况下构成的。 1 window.onload function() {2 var a factorial;3 factorial null;4 alert(a(4));5 };6 7 /**8 * 叠乘9 * param {叠乘的基数} num n 10 * return {叠乘结果} n*(n-1)*(n-2)*...*1 11 */…

正则表达式及测试工具

1. 正则表达式 正则表达式&#xff1a;一种匹配文本中的字符序列的字符模式。在很多文本编辑器或其他工具里&#xff0c;正则表达式通常被用来检索或替换那些符合某种模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。 一个正则表达式就是由普通字符&…

CCD与CMOS摄像头的区别

首先说一下在闭路电视监控中摄像机的CCD 和CMOS 的结构&#xff0c;ADC的位置和数量是最大的不同。简单的说&#xff0c;CCD每曝光一次&#xff0c;在快门关闭后进行像素转移处理&#xff0c;将每一行中每一个像素&#xff08;pixel&#xff09;的电荷信号依序传入“缓冲器”中…

Java注释教程– ULTIMATE指南(PDF下载)

编者注&#xff1a;在本文中&#xff0c;我们提供了全面的Java注释教程。 Java中的注释是一项主要功能&#xff0c;每个Java开发人员都应该知道如何使用它们。 我们在Java Code Geeks上提供了许多教程&#xff0c;例如创建自己的Java注释 &#xff0c; 带有自定义注释的Java注…

Jquery获取DOM绑定事件

获取到当前正在执行的事件&#xff1a; $(#testDive).bind(click, function(event){alert(event: event.type)}); 获取所有绑定事件&#xff1a; $._data(document.getElementById(testDive), events); 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

laravel中的自定义函数的加载和第三方扩展库加载

一.自定义公共函数 1. 创建文件 app/Helpers/functions.php 2. 修改项目 composer.json 3.运行composer dump-auto 4.OK&#xff0c;然后你就可以在任何地方用到 app/Helpers/functions.php 中的函数了。 二.添加第三方扩展库 1.确定你要放第三方库的目录&#xff0c;比如还是刚…

Java EE 8发生了什么?

Java EE 8的工作进展顺利。 是时候赶上了&#xff01; 无需费力就可以潜入… 不要忘记Java EE 7….. 围绕三个重要主题 HTML 5对齐–用于WebSocket的Java API&#xff08;JSR 356&#xff09;&#xff0c;JSON处理&#xff08;JSR 353&#xff09;&#xff0c;JAX-RS 2.0&…

HDU 1312 Red and Black

这题就是比较水的一道搜索题了&#xff0c;BFS跟DFS都能做&#xff0c;直接看代码吧&#xff01; AC code&#xff1a; View Code 1 #include <iostream> 2 #define MAX 50 3 using namespace std; 4 int w, h; 5 char map[MAX][MAX]; 6 int dir[][2] {{0, 1}, {1, 0},…

HTML5新增属性学习笔记

1、form属性 表单内的从属元素&#xff0c;可以写在表单外部。可以通过指定元素的form属性来声明元素所属表单。form的属性值为表单的id。 1 <form id"testForm"> 2 <input type"text"> 3 </form> 4 <textarea form"testFo…

Unity3D笔记十七 Unity3D生命周期

一个游戏组件的脚本有一个生命周期——一开始实例化&#xff0c;直到结束实例被销毁。在这期间&#xff0c;他们有时候处于激活状态&#xff0c;有时候处于非激活状态&#xff1b;对于活动&#xff0c;对用户有时候可见&#xff0c;有时候不可见 本文主要讨论常见脚本的的生命周…

自适应堆大小

在改进我们的测试平台以改进Plumbr GC问题检测器的同时 &#xff0c;我最终编写了一个小型测试用例&#xff0c;我认为这对于更广泛的读者来说可能很有趣。 我追求的目标是测试JVM在eden&#xff0c;survivor和Tenured空间之间如何分割堆方面的自适应性。 测试本身正在成批生成…