【问题标题】:Is it safe to use UTF-8 character literals in JavaScript source code?在 JavaScript 源代码中使用 UTF-8 字符文字是否安全?
【发布时间】:2015-03-04 15:22:04
【问题描述】:

编写包含 UTF-8 字符文字的 JavaScript 源代码(在浏览器中执行)是否省钱?

例如,我想在字符串中使用省略号文字:

var foo = "Oops… Something went wrong";

“现代”浏览器是否支持此功能?某处是否有发布的浏览器支持矩阵?

【问题讨论】:

  • 只要为您的 JavaScript 文件提供正确的内容标题,这不会给您带来任何问题。但是,如果你不确定你总是可以使用十六进制转义。请注意,三字节和四字节序列有点麻烦,但 16 位字符非常安全。
  • @Pointy:请给出答案,以便我可以正确投票:-)
  • @Bergi 好吧,我很犹豫,因为虽然我相信这是真的,但我觉得这不是我拥有丰富经验或知识的东西,但由于 JavaScript 明确是一种 Unicode 语言,我想它是安全的:)

标签: javascript utf-8


【解决方案1】:

按照规范,JavaScript 是一种 Unicode 语言,因此字符串中的 Unicode 字符应该是安全的。您可以使用十六进制转义符 (\u8E24) 作为替代方案。确保为您的脚本文件提供正确的内容类型标头。

请注意,超过一个和两个字节序列的字符是有问题的,并且 JavaScript 正则表达式对于超出第一个代码页的字符很糟糕。 (好吧,也许不是“可怕”,但充其量是原始的。)

您还可以在标识符中使用 Unicode 字母、Unicode 组合标记和 Unicode 连接符标点字符,以防您想打动您的朋友。因此

var wavy﹏line = "wow";

是非常好的 JavaScript(但如果您发现浏览器无法正常工作,那么祝您的错误报告好运)。

Read all about it in the spec,或者晚上睡觉用它:)

【讨论】:

  • 谢谢@Bergi!我忘记了那部分。 (规范说明了语言假设文本在所有情况下都是规范化的 Unicode,但我认为如果没有正确的标题,我不会依赖于正确的工作。)
  • 感谢您提供最丰富和有趣的答案。我希望我能投票两次;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多