好的,请检查一下:
TEST 1:
复制粘贴(并按回车键):window.DB["ar,i>í"]
它将显示如下内容:
Object {rootChange: "í", subjuntivo: Array[4], rootFind: "i", gerundio: "$ando", indicativo: Array[5]…}
测试2:
现在,复制粘贴这个一个(它看起来完全一样,等等!):window.DB["ar,i>í"]
响应是:
undefined
好的,那么请你向我解释一下发生了什么以及如何解决(将第二个转换为第一个)?
答案 0 :(得分:4)
没有什么奇怪的,它们是不同的角色看起来一样。如果将它们转换为十六进制:
í= 69 cc 81
í= c3 ad
所以,只需用另一个替换其中一个 你为什么要首先使用这样的字符?
答案 1 :(得分:2)
那是因为第一个字符串的长度是7,而不是6.第一个字符串的最后一个“字符”实际上是两个看起来像一个字符的字符。试试这个:
var a = "ar,i>í", b = "ar,i>í";
for (var i = 0; i < a.length; ++i) {
console.log(a[i]);
}
for (var i = 0; i < b.length; ++i) {
console.log(b[i]);
}
答案 2 :(得分:0)
如果您查看两者的ASCII字符编码:
第一个是:
[119, 105, 110, 100, 111, 119, 46, 68, 66, 91, 34, 97, 114, 44, 105, 62, 105, 769, 34, 93]
第二个是:
[119, 105, 110, 100, 111, 119, 46, 68, 66, 91, 34, 97, 114, 44, 105, 62, 237, 34, 93]
所以第二个例子是缺少与769
对应的unicode字符部分。
使用我使用的代码检查自己:
var arr = [];
for (var i = 0, l = s.length; i < l; i++) {
arr.push(s.charCodeAt(i));
}
console.log(arr);