使用ISO-8859-1上的jQuery UI按钮标题

Using ISO-8859-1 on jQuery UI button title

本文关键字:按钮 标题 UI jQuery ISO-8859-1 上的 使用      更新时间:2023-09-26

我正在更改一个使用ISO-8859-1编码的现有页面,无法将其编码更改为UTF-8。

我正在使用jQueryUIDialog向用户发送一些信息。

一切都很好,除了一些按钮有如下重音字符:

buttons: [
{
    text: "SIM!",
    click: function() { //'yes' button clicked }
}, {
    text:'NÃO',
    click: function() { //'no' button clicked }
}
]

当我显示对话框时,"NâO"按钮变为"NÃO",但浏览器忽略html实体并显示N&阿蒂尔德;O.

我还试着把N&阿蒂尔德;O而不是NâO,但没有起作用。

有没有办法在jQuery UI按钮上正确显示重音符号?


更新

在解决了这个问题一上午之后,我看到了发生了什么…CMS只将javascript文本更改为HTML实体(这是我见过的最糟糕的CMS)。我解决了用我想放在按钮上的文本创建隐藏div的问题,并使用了它,而不是只放置一个字符串,如下所示:

之前:

buttons: [
{
    text: "SIM!",
    click: function() { //'yes' button clicked }
}, {
    text:'NÃO',
    click: function() { //'no' button clicked }
}
]

之后:

    buttons: [
    {
           text: "SIM!",
       click: function() { //'yes' button clicked }
    }, {
       text:$("#badcms").html(),
       click: function() { //'no' button clicked }
    }
    ]
</script>
(...)
<div id="badcms" style="display:none">NÃO</div>

您需要将文件从ISO-8859-1转换(转码)为UTF-8。一个好的编辑器可以做到这一点(例如,Notepad++)。然后,只需确保正确声明编码(这是转换为UTF-8的重要部分)。

正如评论中所建议的,我正在回答我自己的问题。


在与这个问题斗争了整整一个上午之后,我看到了发生了什么…CMS只将javascript文本更改为HTML实体(这是我见过的最糟糕的CMS)。我解决了用我想放在按钮上的文本创建隐藏div的问题,并使用了它,而不是只放置一个字符串,如下所示:

之前:

buttons: [
{
    text: "SIM!",
    click: function() { //'yes' button clicked }
}, {
    text:'NÃO',
    click: function() { //'no' button clicked }
}
]

之后:

    buttons: [
    {
           text: "SIM!",
       click: function() { //'yes' button clicked }
    }, {
       text:$("#badcms").html(),
       click: function() { //'no' button clicked }
    }
    ]
</script>
(...)
<div id="badcms" style="display:none">NÃO</div>

为什么不对实体进行编码?

N&#195;O

由于.text以任何格式转义实体,您可以将初始文本设置为text:'NAO',然后获取按钮并更新其html;

$('.ui-dialog-buttonset').children('button:contains(NAO)').html("N&Atilde;O");

尽管我怀疑任何后续的按钮操作都会重置这个。

jQuery UI对话框有一个解决方案。不要使用"text"属性,而是使用类似这样的"html"属性:
buttons: [
    {
        html: "SIM!",
        click: function() { //'yes' button clicked }
    }, {
        html:'N&Atilde;O',
        click: function() { //'no' button clicked }
    }
]