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

Javascript 在jQuery UI按钮标题上使用ISO-8859-1,javascript,jquery,jquery-ui,character-encoding,Javascript,Jquery,Jquery Ui,Character Encoding,我正在更改使用ISO-8859-1编码的现有页面,无法将其编码更改为UTF-8 我正在使用jQueryUI对话框向用户发送一些信息 一切都很好,除了一些按钮有以下突出的字符: buttons: [ { text: "SIM!", click: function() { //'yes' button clicked } }, { text:'NÃO', click: function() { //'no' button clicked } } ] 显示对话框时,“

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

我正在使用jQueryUI对话框向用户发送一些信息

一切都很好,除了一些按钮有以下突出的字符:

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,但不起作用

有没有办法在jQueryUI按钮上正确显示带重音的Ã


更新 在和这个问题斗争了一上午之后,我看到了发生的事情。。。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:'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>
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>
之后:

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>
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>
按钮:[
{
文字:“SIM!”,
单击:函数(){/'yes'按钮已单击}
}, {
文本:$(“#badcms”).html(),
单击:函数(){/'no'按钮已单击}
}
]
(...)
NÃO

为什么不对实体进行编码

N&#195;O

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

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

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

您需要将文件从ISO-8859-1转换(转码)为UTF-8。一个好的编辑器可以做到这一点(例如记事本++)。然后确保正确声明了编码(这是迁移到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:'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>
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>
之后:

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>
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>
按钮:[
{
文字:“SIM!”,
单击:函数(){/'yes'按钮已单击}
}, {
文本:$(“#badcms”).html(),
单击:函数(){/'no'按钮已单击}
}
]
(...)
NÃO

jQuery UI对话框对此有一个解决方案。不要使用“text”属性,而是使用“html”属性,如下所示:

buttons: [
    {
        html: "SIM!",
        click: function() { //'yes' button clicked }
    }, {
        html:'N&Atilde;O',
        click: function() { //'no' button clicked }
    }
]

我看不出NÃO和NÃOCan的区别你能提供一个屏幕截图吗?众所周知,编码问题很难跨处理编码本身的层进行沟通。对不起,我必须编辑这个问题。政府;阿蒂尔德;在这两种情况下都转换为Ã。@Alnitak I编辑了问题以使用内联代码块来显示原始标记。您不应该使用
标签
属性而不是
文本
<代码>文本用于启用/禁用标签,在您的情况下,它将始终处于启用状态,因为非空字符串文字是真实的。您可以简单地看到原始标记中的标签(可能是
元素中的标签),或者更好(从维护的角度):
Ã