字符编码 Unicode 和 UTF

93 阅读2分钟

转载阮一峰的网络日志

字符编码笔记:ASCII,Unicode 和 UTF-8

1、U+4E25 和 \u4e25

\u4e25 表示一个 Unicode 转义序列,它是由\u后跟4个十六进制数字组成的表示。在 Java 和一些编程语言中,可以使用 Unicode 转义序列来表示特定的 Unicode 字符。

而 U+4E25 表示一个 Unicode 字符的代码点。Unicode 是一个字符集,它为每个字符分配了一个唯一的代码点。在 Unicode 中,每个字符都有一个唯一的代码值,用 U+开头,后跟字符的 Unicode 码点的十六进制表示。

因此,\u4e25 和 U+4E25 实际上表示相同的 Unicode 字符,它们都表示中文字符"严"。这是因为 Unicode 字符 U+4E25 对应的十六进制值是4E25,而 \u4e25 中的4e25也是表示相同的十六进制值。

需要注意的是,在不同的上下文中,可能会使用不同的表示方式来表示 Unicode 字符。在 Java、JavaScript 等编程语言中,通常使用 \u 转义序列来表示 Unicode 字符。而在 Unicode 标准和其他文档中,会使用 U+ 跟上字符的码点来表示 Unicode 字符。

总结来说,\u4e25 和 U+4E25 表示相同的 Unicode 字符,只是表示方式略有不同。

2、UTF-8 BOM

BOM:byte order mark,定义字节顺序,因为网络传输中分为两种,大头和小头。uft-8不需要bom表明字节顺序,但可以用BOM来表示编码方式,windows就是采用bom来标记文本文件的编码方式的。

bom是为utf-16和utf-32准备的,用于标记字节顺序。微软在utf-8中使用bom是因为这样可以把UTF-8和ASCII等编码区分开来,但这样的文件在windows之外的操作系统里会带来问题。

不含bom的UTF-8才是标准形式。UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。 UTF-8 的网页代码不应使用 BOM,否则常常会出错。这是一个小例子: 为什么这个网页代码 内的信息会被浏览器理解为在 内? image.png ```

3、Universal Character Set coded in 2 octets

4、unicode 最大17个平面,一个平面两个字节,能容纳 65536 字符

4、细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4