【问题标题】:using unicode in Javascript在 Javascript 中使用 unicode
【发布时间】:2012-09-30 18:35:36
【问题描述】:

在 JavaScript 中,我们可以使用以下代码行(使用 Unicode)来显示版权符号:

var x = "\u00A9 RPeripherals";

为什么我们不能直接使用 ALT 代码 (alt+0169) 键入版权符号,如下所示:

var x = "© RPeripherals" ;

这两种方法有什么区别?

【问题讨论】:

  • js 字符串解析器将看到 \u00a9 并转换为您正在使用的字体中的等效字符(但不能保证 00a9 始终是版权字符)。如果您使用不同的字符集,至少将其保留为文本 \u00a9 不太可能被破坏。如果某些地方存在字符集不匹配,则所有组成字符都不是“可修改的”,而嵌入由该转义序列表示的实际值很容易修改。
  • >@MarcB : 谢谢你的帮助!!!

标签: javascript


【解决方案1】:

为什么我们不能直接使用 ALT 代码 (alt+0169) 键入版权符号,如下所示:

谁这么说的?当然可以。只需将您的代码编辑器配置为对源文件使用 UTF-8 编码。你不应该使用其他任何东西开始......

这两种方法有什么区别?

不同之处在于,使用\uXXXX 方案,您最多可以在线路上传输 2 个,最坏的情况是 5 个额外字节。如果您需要在源代码中嵌入字符,而您的字体无法正确显示,这种拼写可能会有所帮助。例如,我用于编程的字体中没有繁体中文字符,所以如果我在代码编辑器中输入中文字符,我会看到一堆带有 Unicode 码位数字的问号或矩形,而不是实际的人物。但是字体中有中文字形的人不会有这个问题。

如果我和那个人想要共享我们的源代码,那么另一个人最好使用\uXXXX 方案,因为我可以通过在 Unicode 表中查找它来验证哪个字符。这就是所有的区别。

编辑

ECMAScript 标准 (v 262/5.1) 明确指出

符合本标准的实施应解释 符合 Unicode 标准 3.0 版或 后来和 ISO/IEC 10646-1 采用 UCS-2 或 UTF-16 编码形式,实施级别 3。如果采用 ISO/IEC 10646-1 子集没有另外指定,假定为BMP 子集,集合300。如果采用的编码形式不是,否则 指定,它假定为 UTF-16 编码形式。

所以,标准保证字符编码是 Unicode,并强制使用 UTF-16(这很奇怪,我以为是 UTF-8),但我不认为这是实际发生的情况。 . 我相信浏览器默认使用 UTF-8。也许这在后来的标准中有所改变,但这是最后一个被普遍接受的标准。

【讨论】:

  • 谢谢...所以这意味着我们应该始终使用 Unicode 来避免问题。对吗?
  • 我不完全确定我在说什么,所以如果我错了请纠正我,但据我所知,使用大于标准 ASCII(1 字节 p /c, 2 在扩展的情况下)只会导致要传输的文件更重,因为现在每个字符都将使用大量字节(unicode 为 4),因此最好使用 \uXXXX 表示法并让客户端计算机确定流中接下来的四个字节代表一个字符,而不是将我们所有的字符变成 4 个字节。
  • 除了考虑可读性,因为并非所有应用程序都可以读取这些字符,在尝试确定开发人员想要打印的内容时,获取字符代码比获取正方形更好。
【解决方案2】:

为什么我们不能直接直接输入版权符号

因为 JavaScript 引擎能够解析 UTF-8 编码的源文件。

这两种方法有什么区别?

一个很短,要求源文件以支持该字符的编码进行编码,并要求您键入一个未打印在键盘按钮上的字符。

另一个(比较)长,可以完全用 ASCII 表示,可以用标准键盘按钮上的字符进行输入。

【讨论】:

  • 另一个未提及的区别:如果您对换行符之类的字符进行 Unicode 转义,它不会像您直接键入换行符一样终止字符串文字。更多解释请参见developer.mozilla.org/en-US/docs/JavaScript/Guide/…
  • 这个人问的是“为什么我们不能打字”而不是“为什么我们可以”。
猜你喜欢
  • 1970-01-01
  • 2011-10-18
  • 2019-12-26
  • 2020-10-26
  • 2012-05-23
  • 2019-05-12
  • 2017-04-04
  • 1970-01-01
相关资源
最近更新 更多