转义HTML标记.字符集编码可能出现的任何问题

Escape HTML tags. Any issue possible with charset encoding?

本文关键字:任何 问题 HTML 标记 字符集 编码 转义      更新时间:2023-09-26

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

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

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

如果是,如何处理?

PS:例如,等价的PHP函数(http://php.net/manual/en/function.htmlspecialchars.php)具有用于选择字符集的参数。

不,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。)