【问题标题】:Encoding french special chars ExtJS编码法语特殊字符 ExtJS
【发布时间】: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 实体。所以在我的图表中,显示了这个词:

&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 和 Google Chrome 40 上对其进行了测试。在我的工作电脑上没有问题,但在我的个人电脑上它不起作用(更烦人的是,它在客户的计算机)。

谢谢!

如果有什么需要更准确的,请通知我。

编辑

这是我的一个观点的一个例子:

items: [{
    xtype: 'datefield',
    fieldLabel: 'D&eacute;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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 2011-12-28
    • 2016-10-19
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多