如何在 Javascript 中打印罗马语言(例如西班牙语)/特殊字符?

How do I print roman languages (e.g. Spanish) /special characters in Javascript?

我做了一些研究,结果发现我们使用 encodeURI(component)decodeURI.[= 对特殊字符进行编码16=]

然而,当我尝试做类似的事情时:

var my_special_char = 'ñ';
my_div.innerHTML = decodeURI(encodeURI(my_special_char))

打印了一个"question mark"。

我发现这个(不完整)table 关于特殊字符:http://www.javascripter.net/faq/accentedcharacters.htm

当我这样做时有效

decodeURI("%C3%B1"); // ñ

它打印 ñ.

但如果我尝试使用:

decodeURI(encodeURI('ñ'))

我还有 "question mark".

字符编码在 JS 中是如何工作的?我在哪里可以找到 encodeURI 格式的真正全面的特殊字符(开箱即用,可以通过 decodeURI 解码)?

编辑:

编辑 2: 根据答案中的建议,我在 /htdocs 中创建了一个 .htaccess 文件,其内容为:

AddDefaultCharset UTF-8

以及通过在 .html 之前添加 .utf8 来重命名 index.html 和视图的文件文件扩展名。

然后我重新启动了 Apache(从 XAMPP 控制台)。

但问题并没有消失。有什么线索吗?

编辑 3:我终于尝试在 Sublime Text 3 中打开文件并另存为 UTF-8 文件,没有任何变化

您不必在 JS 字符串中进行任何特殊编码(除了可能被视为脚本元素关闭的字符串的特殊情况)。

如果您的 JS 文件编码与 HTTP header(最常见的 UTF-8)相匹配,那么它会被解码

var my_special_char = 'ñ';
my_div.innerHTML = my_special_char;

为了帮助浏览器,并假设您使用相关 HTTP header 正确提供文件(其设置方式在很大程度上取决于您的服务器),您应该在 HTML header:

<meta charset='utf-8'>

如果您的脚本在单独的文件中,您还应该在脚本元素中声明编码:

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

您应该在 head 标签内添加 <meta charset="utf-8" />。这样浏览器就知道使用哪个字符集,不会再出现问号:)

在经典记事本中,点击

即可解决

file > Save As > in Encoding dropdown menu > UTF-8

在记事本++中点击

Encoding > Encode in UTF-8

或通过将字符集属性添加到元标记中 charset='utf-8'

<meta charset='utf-8'>