Jquery Chrome和Safari处理utf 8的方式与Firefox和IE不同,如果utf 8字符不是硬编码的问题?

Jquery Chrome和Safari处理utf 8的方式与Firefox和IE不同,如果utf 8字符不是硬编码的问题?,jquery,autocomplete,diacritics,Jquery,Autocomplete,Diacritics,注:问题标题为本单元讨论的变更 我使用的是jQuery Basistance autocomplete插件,所以我有无重音的autocomplete。重音映射如下所示: map={'À':'A', 'İ':'I'}; 我对字符İ(带点的土耳其大写字母I)有问题。删除重音并转换为小写后,我有以下代码: ("İstanbul").indexOf("is") Firefox和IE给出了0,而Chrome和Safari给出了-1 charCodeAt(0)在所有浏览器中给出相同的结果 Chro

注:问题标题为本单元讨论的变更

我使用的是jQuery Basistance autocomplete插件,所以我有无重音的autocomplete。重音映射如下所示:

map={'À':'A', 'İ':'I'};
我对字符
İ
(带点的土耳其大写字母I)有问题。删除重音并转换为小写后,我有以下代码:

   ("İstanbul").indexOf("is")
Firefox和IE给出了
0
,而Chrome和Safari给出了
-1

charCodeAt(0)
在所有浏览器中给出相同的结果

Chrome和Safari似乎对正常的I和未登录的I有不同的对待

编辑

大家好,大约5个月后,我终于可以为我的问题添加更多来源了。
幸运的是,问题日期和我在那个日期的备份帮助我找到了源代码

之前(土耳其语İBUG)在我用之后(正常工作)更改代码时得到修复 下面我还添加了我的文档charshet(土耳其语)

我不是unicode专家,但如果您让我猜一下“chrome vs ff”问题:
chrome用“源代码”处理字符,我的意思是像\u0128
ff用“可见字符”来处理它,我的意思是像“İ”

之前(土耳其语I BUG)


函数取消访问(accentedString){
var结果=重音字符串;
for(charToAccentedCharClassMap中的var键){
result=result.replace(新的RegExp(charToAccentedCharClassMap[key],“g”),key);
}
//console.log(accentedString)
返回result.toLowerCase();
}

函数删除_重音(str){ 返回deaccent(str.toLowerCase(); 返回str; }

EDIT2几乎没有更正(因此用户编辑了问题,但没有使用键盘):
他以“伊斯坦布尔”取代“斯坦布尔”的“is”

小写的“I”是“ı”。这就是这里发生的事情吗

编辑:


可能太晚了,但我记得现在我遇到了一个非常类似的情况,“@”与“@”不同,因为它是一个不同的unicode字符。我通过硬编码字符串中的Unicode数字解决了这个问题,比如“
\u0040

你能发布一个完整的代码示例吗?我只是复制并粘贴了
“伊斯坦布尔”。indexOf(“is”)
到我的Chrome控制台中,它工作正常。尝试制作一个最小化的示例,您可以与我们分享,可能使用JSFIDLE.net。您不能删除字母上的重音,以便将
I
等设置为
I
?然后您可以检查
是否为
function remove_accent(str) {var map={'À':'A','Á':'A','Â':'A','Ã':'A','Ä':'A','Å':'A','Æ':'AE','Ç':'C','È':'E','É':'E','Ê':'E','Ë':'E','Ì':'I','Í':'I','Î':'I','Ï':'I','Ð':'D','Ñ':'N','Ò':'O','Ó':'O','Ô':'O','Õ':'O','Ö':'O','Ø':'O','Ù':'U','Ú':'U','Û':'U','Ü':'U','Ý':'Y','ß':'s','à':'a','á':'a','â':'a','ã':'a','ä':'a','å':'a','æ':'ae','ç':'c','è':'e','é':'e','ê':'e','ë':'e','ì':'i','í':'i','î':'i','ï':'i','ñ':'n','ò':'o','ó':'o','ô':'o','õ':'o','ö':'o','ø':'o','ù':'u','ú':'u','û':'u','ü':'u','ý':'y','ÿ':'y','Ā':'A','ā':'a','Ă':'A','ă':'a','Ą':'A','ą':'a','Ć':'C','ć':'c','Ĉ':'C','ĉ':'c','Ċ':'C','ċ':'c','Č':'C','č':'c','Ď':'D','ď':'d','Đ':'D','đ':'d','Ē':'E','ē':'e','Ĕ':'E','ĕ':'e','Ė':'E','ė':'e','Ę':'E','ę':'e','Ě':'E','ě':'e','Ĝ':'G','ĝ':'g','Ğ':'G','ğ':'g','Ġ':'G','ġ':'g','Ģ':'G','ģ':'g','Ĥ':'H','ĥ':'h','Ħ':'H','ħ':'h','Ĩ':'I','ĩ':'i','Ī':'I','ī':'i','Ĭ':'I','ĭ':'i','Į':'I','į':'i','İ':'I','ı':'i','IJ':'IJ','ij':'ij','Ĵ':'J','ĵ':'j','Ķ':'K','ķ':'k','Ĺ':'L','ĺ':'l','Ļ':'L','ļ':'l','Ľ':'L','ľ':'l','Ŀ':'L','ŀ':'l','Ł':'L','ł':'l','Ń':'N','ń':'n','Ņ':'N','ņ':'n','Ň':'N','ň':'n','ʼn':'n','Ō':'O','ō':'o','Ŏ':'O','ŏ':'o','Ő':'O','ő':'o','Œ':'OE','œ':'oe','Ŕ':'R','ŕ':'r','Ŗ':'R','ŗ':'r','Ř':'R','ř':'r','Ś':'S','ś':'s','Ŝ':'S','ŝ':'s','Ş':'S','ş':'s','Š':'S','š':'s','Ţ':'T','ţ':'t','Ť':'T','ť':'t','Ŧ':'T','ŧ':'t','Ũ':'U','ũ':'u','Ū':'U','ū':'u','Ŭ':'U','ŭ':'u','Ů':'U','ů':'u','Ű':'U','ű':'u','Ų':'U','ų':'u','Ŵ':'W','ŵ':'w','Ŷ':'Y','ŷ':'y','Ÿ':'Y','Ź':'Z','ź':'z','Ż':'Z','ż':'z','Ž':'Z','ž':'z','ſ':'s','ƒ':'f','Ơ':'O','ơ':'o','Ư':'U','ư':'u','Ǎ':'A','ǎ':'a','Ǐ':'I','ǐ':'i','Ǒ':'O','ǒ':'o','Ǔ':'U','ǔ':'u','Ǖ':'U','ǖ':'u','Ǘ':'U','ǘ':'u','Ǚ':'U','ǚ':'u','Ǜ':'U','ǜ':'u','Ǻ':'A','ǻ':'a','Ǽ':'AE','ǽ':'ae','Ǿ':'O','ǿ':'o'};var res='';for (var i=0;i<str.length;i++){c=str.charAt(i);res+=map[c]||c;}return res;}  
var charToAccentedCharClassMap = {
// A to H
    'I': '[Iiı\xcc-\xcf\xec-\xef\u0128-\u0130\u0132\u0133\u01cf\u01d0\u0208-\u020b\u1d35\u1d62\u1e2c\u1e2d\u1ec8-\u1ecb\u2071\u2110\u2111\u2139\u2148\u2160-\u2163\u2165-\u2168\u216a\u216b\u2170-\u2173\u2175-\u2178\u217a\u217b\u24a4\u24be\u24d8\u337a\u33cc\u33d5\ufb01\ufb03\uff29\uff49]'
// J to Z
    };
("istanbul").indexOf("is")
("Istanbul").toLowerCase().indexOf("ıs")