如何控制字符串编码UTF

How to control the string encoding UTF

编译为 javaScript 时,dart2js 编译器将字符串转换为转义的 utf 格式

\u043d\u041d...

我不确定他为什么这样做(原始文件包含西里尔文的文本字符串,但系统(希望 DartEditor)使用 UTF)。

其他编译器(如 Closure 或 TypeScript)保持原样。

不知道有没有人能解释一下:

  1. 为什么会这样
  2. 这个有什么意义
  3. 有没有办法关闭它

谢谢。

在浏览器中(至少在 Chrome 中的 V8 中)如果没有超出 0-255 范围的字符,则字符串用每个字符 1 个字节表示。如果只有一个字符超出该范围,则该字符串表示为每个字符 2 个字节。因此,对于少量西里尔字符,就浏览器内存而言,这可能是一种更紧凑的表示形式。

但是我不知道有任何测量结果,并且可能有一些原因导致这种理论上的 space 节省在实践中不起作用。

当 dart2js 读取一个字符串时,它会对该字符串进行解码。例如,如果您的字符串包含 \n,它会将其解码为换行符。 dart2js 在写出字符串时,确实需要重新对字符串进行编码。为简单起见,dart2js 只对非 ASCII 的所有内容进行编码。

请提交错误报告,我们会看看它是否容易修复。