【发布时间】:2015-03-06 15:33:06
【问题描述】:
我有一个用 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 和 Google Chrome 40 上对其进行了测试。在我的工作电脑上没有问题,但在我的个人电脑上它不起作用(更烦人的是,它在客户的计算机)。
谢谢!
如果有什么需要更准确的,请通知我。
编辑
这是我的一个观点的一个例子:
items: [{
xtype: 'datefield',
fieldLabel: 'Début',
name: 'startDate',
allowBlank: false,
margin: '5 5 5 5'
}]
结果是:
感谢 HTML 实体,标签没有问题,但尽管我在 ext-locale-fr.js 中放入了 HTML 实体,但月份名称存在问题。
【问题讨论】:
-
您确定将所有文件编辑为 utf8 格式吗?您的编辑器似乎将您的 ext-locale 文件视为 iso8859-*。
-
我很确定,因为我使用括号编辑器,它只打开 utf-8 文件。
-
您能否将有问题的页面或至少其中的一部分发布到某个地方?
-
我加了一个简单的例子,希望够用了
标签: javascript html extjs utf-8