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

时间:2015-05-18 08:13:28

标签: javascript character-encoding

我做了一些研究,结果发现我们使用 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 进行即时解读)?

修改

  • 在我的(应用程序是一个AngularJS应用程序)我有 meta charset = utf-8 (用答案中提出的正确的HTML语法编写,它实际上来自AngularJS的初学者项目)
  • 我正在使用 WebStorm IDE :我检查了设置,使用的enconding是 UTF-8
  • 我在 Apache (XAMPP)
  • 中本地提供该页面

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

AddDefaultCharset UTF-8

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

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

但问题并没有消失。任何线索?

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

3 个答案:

答案 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'>