我做了一些研究,结果发现我们使用 encodeURI(组件)和 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('ñ'))
我仍然有一个“问号”。
角色enconding在JS中是如何工作的?我在哪里可以找到 encodeURI 格式的非常全面的特殊字符(通过 decodeURI 进行即时解读)?
修改:
编辑2 : 根据答案中的建议,我在 / htdocs 中创建了 .htaccess 文件,其内容为:
AddDefaultCharset UTF-8
以及通过在 .html 文件扩展名之前添加 .utf8 来重命名index.html和视图的文件。
然后我重新启动了Apache(来自XAMPP控制台)。
但问题并没有消失。任何线索?
编辑3 :我终于尝试在Sublime Text 3中打开文件并保存为UTF-8文件,没有任何变化
答案 0 :(得分:2)
您不必在JS字符串中进行任何特殊编码(除了可能被视为脚本元素关闭的字符串的特殊情况)。
如果您的JS文件编码与HTTP标头(最常见的是UTF-8)匹配,那么只要您执行
就会对其进行解码var my_special_char = 'ñ';
my_div.innerHTML = my_special_char;
为了帮助浏览器,并假设您正确地使用相关的HTTP标头(其设置方式取决于您的服务器)正确提供文件,您应该在HTML中使用此元标记头:
<meta charset='utf-8'>
如果您的脚本位于单独的文件中,您还应该在脚本元素中声明编码:
<script charset="UTF-8" src="yourFile.js"></script>
答案 1 :(得分:2)
您应在<meta charset="utf-8" />
标记内添加head
。通过这种方式,浏览器知道要使用哪个字符集,不会出现更多问号:)
答案 2 :(得分:0)
在经典记事本中,点击
即可解决文件&gt;另存为&gt;在“编码”下拉菜单中&gt; UTF-8
在记事本++中点击
编码&gt;用UTF-8编码
或将charset属性添加到元标记charset='utf-8'
<meta charset='utf-8'>