重音字符的问题

时间:2012-06-18 18:28:42

标签: javascript encoding special-characters

我的网站上有一个搜索框,我需要将用户输入的所有西班牙语字符替换为相应的英文字母。我编码了如下所示。当我将它插入我的项目时,即使创建一个编码相同的简单html页面,这也无法正常工作。我的页面正在使用<meta charset="utf-8" />。当我创建一个小提琴http://jsfiddle.net/KJAy3/时,这工作正常。这是它在调试器enter image description here

中的显示方式

我做错了什么?我应该对我们进行什么样的编码?在表单提交之前触发此Replace方法。

function encodeSearch(term){

term=term.replace("á","a");
term=term.replace("Á","A");
term=term.replace("é","e");
term=term.replace("É","E");
term=term.replace("í","i");
term=term.replace("Í","I");
term=term.replace("ó","o");
term=term.replace("Ó","O");
term=term.replace("ú","u");
term=term.replace("Ú","U");
term=term.replace("ñ","n");
term=term.replace("Ñ","N");
return term;

}

2 个答案:

答案 0 :(得分:7)

您使用过<script type="application/javascript" charset="utf-8" src="yourfile.js"></script>"吗? (当然,假设您的文件保存为utf-8。)

答案 1 :(得分:0)

如果您要在HTML中使用这些特殊字符,可能需要对所有特殊字符使用此字符串replace方法:

[somestring].replace(/[\u0080-\u024F]/g,
                      function(a) {
                        return '&#'+a.charCodeAt(0)+';';
                      });

它会将所有特殊字符转换为数字html实体,并且无需在javascript中键入所有这些字符,例如

 'ñíóúü¡¿'.replace(.replace(/[\u0080-\u024F]/g,
                      function(a) {
                        return '&#'+a.charCodeAt(0)+';';
                      });
  //=> result
  // &#241;&#237;&#243;&#250;&#252;&#161;&#191;