编码法国特殊字符ExtJS

时间:2015-03-06 15:33:07

标签: javascript html5 extjs utf-8

我有一个使用ExtJS开发的应用程序。我使用ext-locale-fr.js。

我的index.html以

开头
<!DOCTYPE HTML>
    <head>
        <meta charset="UTF-8">

我的文件以UTF-8编码,浏览器中的编码为“Unicode”。

如果我理解得很好,我不需要为我的特殊字符使用HTML实体,因为我使用的是UTF-8。因此,如果我在代码中写下“Évènement”这个词,它应该在我的浏览器中正确写入。不幸的是,它似乎是这样的:

�v�nement

如果我使用HTML权利,则会正确显示。

此外,我在此应用程序中使用sencha-charts,并使用HTML5 canvas元素绘制图表,该元素不解释HTML实体。所以在我的图表中,显示的是:

&Eacute;v&egrave;nement

我设法用我在互联网上找到的作弊绕过它:

decodeHtml: function (html) {
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    return txt.value;
}

但我认为这不是一个好习惯。

最后,我覆盖了ext-locale-fr.js,用相应的HTML实体替换所有特殊字符。但这是唯一不起作用的技巧。在日期选择器中,月份没有正确显示, 仍然出现,但我无法使用我的decodeHtml技巧。

我想解决这个问题的真正根源,而不仅仅是症状,我不知道该怎么办。

我确切地说,我的应用程序中显示的所有字符串都直接写在我的JS文件中,而不是来自ajax请求。

我在Windows 7上使用Firefox 36和谷歌浏览器40进行了测试。在我的计算机上工作没有问题,但在我的个人计算机上它不起作用(而且更烦人,它不起作用客户的电脑也是。)

谢谢!

如果需要预先准备,请通知我。

修改

以下是我的一个观点中的一个示例:

items: [{
    xtype: 'datefield',
    fieldLabel: 'D&eacute;but',
    name: 'startDate',
    allowBlank: false,
    margin: '5 5 5 5'
}]

结果是:

Result

由于HTML实体,标签没问题,但是尽管我在ext-locale-fr.js中添加了HTML实体,但是月份名称存在问题。

1 个答案:

答案 0 :(得分:0)

在我的情况下,此问题是由* .js文件的文件编码引起的。使用Sencha cmd生成的文件未以UTF-8编码,我的编辑器尊重源编码。将文件的编码更改为UTF-8解决了这个问题。