| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> JavaScript知识库 -> Unicode 与 JavaScript。 -> 正文阅读 |
|
|
[JavaScript知识库]Unicode 与 JavaScript。 |
|
在上一篇我们讲解了?Unicode 和 UTF-8 的关系,今天,让我们来看看在 JavaScript 中 编码格式的应用。 Unicode 就是包含了所有的字符在一个集合内,计算机只要支持这一个字符集,就能显示所有的字符,再也不会有乱码了。Unicode 中的每一个字符都指定了一个编码,称为符号的“码点”。
?现如今 Unicode 14.0 是?Unicode 标准的计划版本,以跟随 Unicode 13.0.Unicode 多达十多万个字符,这么多的字符不是一次性定义的,而是分区定义。每个区可以存放65536个(2^16)字符,称为一个平面(plane)。目前,一共有17个(2^5)平面,也就是说,整个Unicode字符集的大小现在是2^21。 最前面的65536个字符位,称为基本平面(缩写BMP),?它的码点范围是从0一直到216-1,写成16进制就是从U+0000到U+FFFF。它是Unicode 最先定义和公布的一个平面。剩下的字符都放在辅助平面(简称 SMP ),码点范围从 U+010000 到 U+10FFFF。 UTF-16 是介于 UTF-32 和 UTF-8的, UTF-32 的每个码点是使用四个字节,字节内容一一对应码点。UTF-8 是可变长的使用 1-4个字节不等。而UTF-16 是使用二个字节(U+0000到U+FFFF)和四个字节(U+010000到U+10FFFF)。 正常写的话,我们一个码点占两个字符,那么我们是把 遇到的两个字节看作一个字符,还是与后面的两个字节一起看作一个字符呢?我们得有一个识别的依据吧,UTF-8 会把一个字节的第一位是0还是1来进行不同的表示字节占有数。 UTF-16 是怎么表示的呢? 还记得前面说的平面嘛,在基本平面内,从 U+D800 到 U+DFFFF, 是一个空段,这些个码点不对应字符,感觉是故意这么设计的,反正非常的巧妙,我们可以利用这些空的码点进行一个映射,因为?辅助平面的字符位共有 2^20 个,而且空出来的正好是 2^20 个空白的码点,我们可以非常巧妙的利用到这空出的码点。将这20位拆成两半,前10位映射在U+D800到U+DBFF(空间大小2^10),称为高位(H),后10位映射在U+DC00到U+DFFF(空间大小210),称为低位(L)。这意味着,一个辅助平面的字符,被拆成两个基本平面的字符表示。 所以,当我们遇到两个字节,发现它的码点在U+D800到U+DBFF之间,就可以断定,紧跟在后面的两个字节的码点,应该在U+DC00到U+DFFF之间,这四个字节必须放在一起解读。 我们怎么来进行 UTF-16 的转码呢? 首先,给定一个 Unicode 的码点,我们需要确定,它是属于基本平面的字符,还是在辅助平面的字符,如果是前面的字符,直接将码点转为对应的十六进制形式,长度为两个字节。
那么JavaScript 中使用的是哪种编码。 在 ES 5.1 中有一段话。
说明了 javaScript 引擎使用的编码格式。JS 引擎可以选择使用 UCS-2 或者 UTF-16。 那么为什么会选择 UTF-8呢??由于历史原因,最先出现的 UCS-2,接着 1996 年 UTF-16 随着 Unicode 2.0 标准诞生,就可以迁移到了 UTF-16。但是它们无法移至 UTF-8,是因为这将破坏 API 接口中的二进制兼容性(以及其他功能)。 |
|
|
| JavaScript知识库 最新文章 |
| ES6的相关知识点 |
| react 函数式组件 & react其他一些总结 |
| Vue基础超详细 |
| 前端JS也可以连点成线(Vue中运用 AntVG6) |
| Vue事件处理的基本使用 |
| Vue后台项目的记录 (一) |
| 前后端分离vue跨域,devServer配置proxy代理 |
| TypeScript |
| 初识vuex |
| vue项目安装包指令收集 |
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年12日历 | -2025/12/11 4:28:11- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |