如何在 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 解码)?
编辑:
- 在我的(应用程序是一个 AngularJS 应用程序)中,我有 meta charset=utf-8(按照建议的正确 HTML 语法编写在答案中,它实际上来自 AngularJS' starter project)
- 我正在使用 WebStorm IDE:我检查了设置,使用的编码是 UTF-8
- 我在 Apache (XAMPP)
中本地提供页面
编辑 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'>
我做了一些研究,结果发现我们使用 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 解码)?
编辑:
- 在我的(应用程序是一个 AngularJS 应用程序)中,我有 meta charset=utf-8(按照建议的正确 HTML 语法编写在答案中,它实际上来自 AngularJS' starter project)
- 我正在使用 WebStorm IDE:我检查了设置,使用的编码是 UTF-8
- 我在 Apache (XAMPP) 中本地提供页面
编辑 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'>