js转义特殊字符
Js escape special characters
我总是将非 ASCII 字符(例如 à
、ñ
、é
)转义为 HTML 个实体(à
、&entilde;
、é
),即使我使用字符集 UTF-8(仅用于文本编辑器支持和简单性)。
我的问题是出于多语言目的,我将所有文本保存在外部 PHP 文件中。
当我必须转义必须提醒的字符串时,问题就来了:
这个 <button onclick="alert('àèìòù')">Click me</button>
输出这个:àèìòù
,
而这个 <script>alert("àèìòù")</script>
输出这个:à ;è ;ì ;ò ;ù ;
.
这是什么原因?
由于我也想转义第二个示例中的字符,我该如何以两个示例都支持的方式来转义?
这些转义字符只能被 HTML 读取。
如果您想在 JS 代码中处理它们(尽管使用 JQuery),一种快速而肮脏的方法是将它们添加到元素并读取输出,否则如果您只想显示输出在页面的某处,这非常简单:)
请参阅以下两个示例:
var myString = "àèìòù";
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>
我总是将非 ASCII 字符(例如 à
、ñ
、é
)转义为 HTML 个实体(à
、&entilde;
、é
),即使我使用字符集 UTF-8(仅用于文本编辑器支持和简单性)。
我的问题是出于多语言目的,我将所有文本保存在外部 PHP 文件中。
当我必须转义必须提醒的字符串时,问题就来了:
这个 <button onclick="alert('àèìòù')">Click me</button>
输出这个:àèìòù
,
而这个 <script>alert("àèìòù")</script>
输出这个:à ;è ;ì ;ò ;ù ;
.
这是什么原因?
由于我也想转义第二个示例中的字符,我该如何以两个示例都支持的方式来转义?
这些转义字符只能被 HTML 读取。
如果您想在 JS 代码中处理它们(尽管使用 JQuery),一种快速而肮脏的方法是将它们添加到元素并读取输出,否则如果您只想显示输出在页面的某处,这非常简单:)
请参阅以下两个示例:
var myString = "àèìòù";
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>