Javascript 编码法语特殊字符ExtJS
我有一个用ExtJS开发的应用程序。我使用ext-locale-fr.js 我的index.html以Javascript 编码法语特殊字符ExtJS,javascript,html,extjs,utf-8,Javascript,Html,Extjs,Utf 8,我有一个用ExtJS开发的应用程序。我使用ext-locale-fr.js 我的index.html以 <!DOCTYPE HTML> <head> <meta charset="UTF-8"> 如果我使用HTML实体,它将正确显示 此外,我在这个应用程序中使用sencha图表,这些图表是使用HTML5画布元素绘制的,该元素不解释HTML实体。因此,在我的图表中,会显示以下单词: Évène
<!DOCTYPE HTML>
<head>
<meta charset="UTF-8">
如果我使用HTML实体,它将正确显示
此外,我在这个应用程序中使用sencha图表,这些图表是使用HTML5画布元素绘制的,该元素不解释HTML实体。因此,在我的图表中,会显示以下单词:
Évènement
我在网上找到了一个骗局,设法绕过了它:
decodeHtml: function (html) {
var txt = document.createElement("textarea");
txt.innerHTML = html;
return txt.value;
}
但我认为这不是一个好的做法
最后,我重写了ext-locale-fr.js,用它们对应的HTML实体替换所有特殊字符。但这是唯一不起作用的伎俩。在日期选择器中,月份未正确显示,并且� 仍然出现,但我无法使用我的HTML解码技巧
我想治愈这个问题的真正根源,而不仅仅是症状,我也不知道该怎么办
我明确指出,我的应用程序中显示的所有字符串都直接写入我的JS文件,而不是来自ajax请求
我在Windows7、Firefox36和GoogleChrome40上进行了测试。在我的工作电脑上没有问题,但在我的个人电脑上它不工作(更烦人的是,它在客户的电脑上也不工作)
谢谢大家!
如果有什么需要澄清的,请通知我
编辑
以下是我的一个观点中的一个例子:
items: [{
xtype: 'datefield',
fieldLabel: 'Début',
name: 'startDate',
allowBlank: false,
margin: '5 5 5 5'
}]
结果是:
由于HTML实体,标签没有问题,但是尽管我在ext-locale-fr.js中添加了HTML实体,月份名称还是有问题。在我的例子中,这个问题是由于*.js文件的文件编码造成的。使用Sencha cmd生成的文件没有用UTF-8编码,我的编辑器尊重源代码编码。将文件编码更改为UTF-8解决了问题。是否确实将所有文件编辑为utf8?你的编辑器似乎将你的ext locale文件视为iso8859-*。我很确定,因为我使用括号编辑器,它只打开utf-8文件。你能将有问题的页面或至少部分页面发布到某个地方吗?我添加了一个简短的示例,我希望它足够了
items: [{
xtype: 'datefield',
fieldLabel: 'Début',
name: 'startDate',
allowBlank: false,
margin: '5 5 5 5'
}]