我有一个使用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实体。所以在我的图表中,显示的是:
Évè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ébut',
name: 'startDate',
allowBlank: false,
margin: '5 5 5 5'
}]
结果是:
由于HTML实体,标签没问题,但是尽管我在ext-locale-fr.js中添加了HTML实体,但是月份名称存在问题。
答案 0 :(得分:0)
在我的情况下,此问题是由* .js文件的文件编码引起的。使用Sencha cmd生成的文件未以UTF-8编码,我的编辑器尊重源编码。将文件的编码更改为UTF-8解决了这个问题。