js转义特殊字符

Js escape special characters

我总是将非 ASCII 字符(例如 àñé)转义为 HTML 个实体(à&entilde;é),即使我使用字符集 UTF-8(仅用于文本编辑器支持和简单性)。

我的问题是出于多语言目的,我将所有文本保存在外部 PHP 文件中。

当我必须转义必须提醒的字符串时,问题就来了:

这个 <button onclick="alert('&agrave;&egrave;&igrave;&ograve;&ugrave;')">Click me</button> 输出这个:àèìòù,

而这个 <script>alert("&agrave;&egrave;&igrave;&ograve;&ugrave;")</script> 输出这个:&agrave ;&egrave ;&igrave ;&ograve ;&ugrave ;.


这是什么原因?

由于我也想转义第二个示例中的字符,我该如何以两个示例都支持的方式来转义?

这些转义字符只能被 HTML 读取。

如果您想在 JS 代码中处理它们(尽管使用 JQuery),一种快速而肮脏的方法是将它们添加到元素并读取输出,否则如果您只想显示输出在页面的某处,这非常简单:)

请参阅以下两个示例:

var myString = "&agrave;&egrave;&igrave;&ograve;&ugrave;";

var escaped = $('<textarea />').html(myString).text();
alert(escaped);

document.getElementById("myElement").innerHTML = myString;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<span id="myElement">a</span>