在JavaScript源代码中使用UTF-8字符文字是否安全?

5

在浏览器中编写包含UTF-8字符字面量的JavaScript源代码是否安全?

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

var foo = "Oops… Something went wrong";

现代的浏览器是否支持这个功能?有没有发布的浏览器支持矩阵?


1
只要你的JavaScript文件使用适当的内容头进行服务,那么这不会给你带来任何问题。但是,如果你不确定,你总可以使用十六进制转义。请注意,三个和四个字节序列有点麻烦,但16位字符是相当安全的。 - Pointy
@Pointy:请把它作为答案,这样我才能适当地点赞它 :-) - Bergi
@Bergi 嗯,我有些犹豫,因为虽然我相信那是正确的,但我感觉自己没有足够的经验或知识,不过既然JavaScript明确是一种Unicode语言,那应该是安全的 :) - Pointy
1个回答

7

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

请注意,超出一到两个字节序列的字符存在问题,并且JavaScript正则表达式对第一个代码页以外的字符效果不佳。(或许不应该说“不佳”,但最多只能算是原始的。)

如果您想给朋友留下印象,则还可以在标识符中使用Unicode字母、Unicode组合标记和Unicode连接器标点字符。 因此,

var wavy﹏line = "wow";

这是完全良好的JavaScript代码(但是如果您找到一个不起作用的浏览器,请祝您好运解决错误)。

在规范中阅读更多信息,或者使用它来入睡 :)


谢谢@Bergi!我忘记了那一部分。(规范说明语言假定在所有情况下文本都是标准化的Unicode,但我认为如果没有正确的头文件,我不会依赖它正常工作。) - Pointy
非常感谢您提供如此详尽有趣的答案。真希望我能点赞两次 ;) - bloudermilk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接