【发布时间】:2018-04-21 06:28:40
【问题描述】:
ECMAScript 规范说明如下:
当一个字符串包含实际的文本数据时,每个元素都被认为是一个单一的 UTF-16 代码单元。无论这是否是 String 的实际存储格式,String 中的字符都按其初始代码单元元素位置编号,就好像它们使用 UTF-16 表示一样。对字符串的所有操作(除非另有说明)都将它们视为未区分的 16 位无符号整数序列;他们不确保生成的字符串是规范化的形式,也不确保语言敏感的结果。
来源:http://ecma-international.org/ecma-262/5.1/#sec-8.4
多年来我一直在编写 javascript,我的编辑器配置为 utf8 编码。为什么我从来没有遇到过字符串问题?我主要用简单的英语和偶尔的表情符号发送代码。 为什么我的代码是 utf8 编码时从来没有遇到过问题,而规范说你需要 utf16?
【问题讨论】:
-
字符串和你的代码不同。
-
因为向下兼容?如果反过来,它可能会破裂。
-
Same section 目的是将从外部进入执行环境的文本数据(例如,用户输入、从文件读取或通过网络接收的文本等)转换为 Unicode在运行的程序看到它之前规范化 Form C。 所以不管你的文件是什么,执行环境都会在处理它之前将它转换为 UTF-16
标签: javascript utf-8 utf-16