JavaScript 中的法语字符在 XSLT 中的 HTML 中

French characters inside JavaScript inside HTML inside XSLT

本文关键字:XSLT 中的 HTML 字符 法语 JavaScript      更新时间:2023-09-26

我有一个 .xsl 文件,其中包含如下所示的 HTML:

<input onblur="resetText(this,'octobre à décembre')" />

显然,这不会按原样工作,所以我必须逃避它。这是我尝试过的:

<xsl:text disable-output-escaping="yes"><![CDATA[
  <input onblur="resetText(this,'octobre &agrave; d&eacute;cembre')" />
]]></xsl:text>

这不起作用,我在浏览器中得到Uncaught SyntaxError: Unexpected identifier

我在这里错过了什么?

显然,这不会按原样工作

没有什么明显的。在 XSLT 中,可以使用 Unicode 字符而不进行转义(前提是编码为 UTF-8 或类似编码)。不能使用未定义的实体,例如 &agrave;

如果需要输出将重音字符转义为 HTML 实体,请尝试将输出方法设置为 HTML(可能不适用于每个 XSLT 处理器)。

我不是这方面的专家,但我想知道您是否正在让浏览器知道要使用什么字符编码?

我会使用 UTF-8

确保将文件保存/转换为 utf-8,并确保指定字符编码

<?xml version="1.0" encoding="utf-8"?>

你不会发布resetText()但这是我想出的一个让事情变得正常:

// remove second param when calling from onblur 
// assumes input value has decoded html entities
function resetText(input) {
    var rawStr = input.value;
    var encodedStr = rawStr.replace(/['u00A0-'u9999<>'&]/gim, function(i) {
       return '&#'+i.charCodeAt(0)+';';
    });
    input.value = encodedStr;
}