【问题标题】:German letters (accented characters) read wrongly in JavaScript and shows wrong on the page德语字母(重音字符)在 JavaScript 中读取错误并在页面上显示错误
【发布时间】:2018-01-04 03:57:45
【问题描述】:

我的页面中有简单的德语本地化全局对象:

GermanLocalization = {
    Required: "Alle Pflichtfelder müssen belegt werden.",
    AddAttacBeforeSave: "Datei kann nicht hochgeladen werden, bevor der Datensatz erstellt ist.",
    FileToBig: "Die Dateigröße überschreitet die maximale Uploadgröße."
}

当我在代码中读取我的变量时,所有特殊的德语字母都读错了,作为问号(下图)。

我的 index.html 页面有 utf-8 编码:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

我的页面实际上是在另一个页面中,它成功地显示了德国字母。我不知道我的页面或 JavaScript 有什么问题,因为调试器显示我的变量如何错误地读取这些字符。

【问题讨论】:

  • 您是否尝试在 Notepad++ 中打开它,编码 → 转换为 UTF-8 并保存文件?
  • &lt;script&gt; 是内联的还是带有src 属性的外部?如果它是外部的,则需要指定包含该字符串的 JavaScript 文件的正确编码,它可能不是以 UTF-8 编码的。
  • 简单问题:您的文件实际上是否以 UTF-8 编码...?!
  • 我把它放在 Nodepad++ 中,当我选择 UTF-8 编码时一切正常。我也这样做了,转换为 UTF-8,然后再次复制到我的脚本文件中。我还是不行。

标签: javascript encoding


【解决方案1】:

如果您的 JavaScript 文件真正编码为 UTF-8,那么这看起来是 UTF-8 被误解为另一种编码的经典案例,在这种情况下是由 JavaScript 解释器。尝试为您的脚本指定编码,例如与:

<script src="myscripts.js" charset="UTF-8">

【讨论】:

  • 如果myscript.jsContent-Type: application/json; charset=utf-8 一起服务,是否还需要这样做?
  • @Kos 否,但如果情况已经如此,那么您的脚本没有使用 UTF-8 保存,您需要更改当前保存的编码。
  • 我会说一个经典案例,即声明为 UTF-8 的东西实际上不是 UTF-8。
  • 根据 OP 提供的附加信息,是的,这似乎是真的。对于下次的 OP,问题中的更多细节(例如,您的脚本是如何实例化的)永远不会受到伤害!
  • 它仍然对我不起作用,即使我将 charset="UTF-8 放到我的脚本中。也许这是我的变量进入全局范围并获得其他编码的问题。
【解决方案2】:

您的文件实际上并未保存为 UTF-8。确保您的编辑器已配置为将其保存为 UTF-8。

【讨论】:

  • 你是对的。 VS 2015 没有将 js 文件保存为 UTF-8,而不是保存为 ANSI。我需要在 notepad++ 中打开我的 JavaScript 文件,转换为 UTF-8,再次保存即可。
猜你喜欢
  • 2014-07-30
  • 1970-01-01
  • 2021-08-15
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多