我需要开发一个javascript函数,不允许字符串中的特殊字符(®©¿¡À)。问题是IE8无法识别字符串中的特殊字符,并在使用indexOf()方法时返回为-1。处理这些特殊字符的正确方法是什么?
答案 0 :(得分:2)
只要您的所有编码都正确(您是将文件保存为UTF-8吗?它是否作为UTF-8?),您应该能够包含这些特殊字符。但是,您可以使用\u
转义JavaScript中的字符,然后转换为十六进制的字符代码。
这是一个实用程序函数,您可以使用它(例如,在您的JavaScript控制台中)来获得转换:
function escapeForCharacter(character){
var escape = character.charCodeAt('0').toString(16);
while(escape.length < 4){ escape = '0' + escape; }
return '\\u'+escape;
}
但是,我会接受deceze的建议。如果逃避特殊字符不是一个选项(我总是喜欢逃避剥离,因为它不太可能做一些会惹恼你的用户的事情,比如删除他们名字中的字母(免责声明:我的名字有'í> '在其中)),使用String
的{{1}}方法和正则表达式。这个将删除任何非ASCII字符:
replace
答案 1 :(得分:0)
var c = "® ´ © ? ! ° A ";
alert(c.indexOf('©'));
正确地为我服务。编码之间只有区别 - &gt; in Win1250
它在utf-8
6
(在IE中)
答案 2 :(得分:-2)
您可以使用正则表达式和函数匹配并替换