【发布时间】:2015-05-18 08:13:28
【问题描述】:
我做了一些研究,发现我们使用 encodeURI(component) 和 decodeURI 来编码特殊字符。
但是当我尝试做类似的事情时:
var my_special_char = 'ñ';
my_div.innerHTML = decodeURI(encodeURI(my_special_char))
打印一个“问号”。
我发现这张(不完整的)关于特殊字符的表格:http://www.javascripter.net/faq/accentedcharacters.htm
当我这样做时有效
decodeURI("%C3%B1"); // ñ
它打印 ñ。
但如果我尝试:
decodeURI(encodeURI('ñ'))
我仍然得到一个“问号”。
字符编码在 JS 中是如何工作的?我在哪里可以找到真正全面的 encodeURI 格式的特殊字符(开箱即用,可以通过 decodeURI 解码)?
编辑:
- 在我的(应用程序是 AngularJS 应用程序)中,我有 meta charset=utf-8(以答案中提出的正确 HTML 语法编写,它实际上来自 AngularJS 的启动项目)
- 我正在使用 WebStorm IDE:我检查了设置,使用的编码是 UTF-8
- 我在 Apache (XAMPP) 中本地提供页面
编辑 2: 按照答案中的建议,我在 /htdocs 中创建了一个 .htaccess 文件,其内容是:
AddDefaultCharset UTF-8
以及通过在 .html 文件扩展名之前添加 .utf8 来重命名 index.html 和视图文件。
然后我重新启动了 Apache(从 XAMPP 控制台)。
但问题并没有消失。有什么线索吗?
EDIT 3:我终于尝试在 Sublime Text 3 中打开文件并保存为 UTF-8 文件,没有任何变化
【问题讨论】:
-
您是在文本编辑器中执行此操作吗?如果是这样,请检查您的文件是如何编码的。
-
你的 JS 代码是在 JS 文件中还是在 HTML 文件中?你自己上菜吗?
标签: javascript character-encoding