1

我有一个转义 HTML 标签的功能,以便能够将文本插入 HTML。非常类似于: 我可以在 javascript 中转义 html 特殊字符吗?

我知道 Javascript 在内部使用 Unicode,但 HTML 页面可能以不同的字符集编码,如 UTF-8 或 ISO8859-1 等。

我的问题是:这个非常简单的转换有什么问题吗?还是我应该考虑页面字符集?

如果是,如何处理?

PS:例如,等效的 PHP 函数(http://php.net/manual/en/function.htmlspecialchars.php)有一个参数来选择一个字符集。

4

1 回答 1

1

不,JavaScript 存在于 Unicode 世界中,因此编码问题通常对它来说是不可见的。escapeHtml在链接的问题中很好。

我能想到的 JavaScript 可以看到字节的唯一地方是data:URL(通常隐藏在 base64 下)。所以这:

 var markup = '<p>Hello, '+escapeHtml(user_supplied_data);
 var url = 'data:text/html;base64,'+btoa(markup);
 iframe.src = url;

原则上是一件坏事。尽管我不知道有任何浏览器会在这种情况下猜测 UTF-7,但charset=...应提供一个参数以确保浏览器对数据使用适当的编码。(btoa使用 ISO-8859-1,物有所值。)

于 2013-07-11T10:03:01.050 回答