@
est 出错原因应该是:打个比方把。 我们要搜索AAA。
输入AAA的时候,点搜索。
AAA被发送到服务器,通过内部转换程式转换,变成aaa。
但是由于AAA没有对应的aaa,或者软件不够智能(比如编码溢出,AAA是UTF8,但是程序只支持GBK-gb2312,那么UFT8的字符-gb2312必然出错了)。
最后导致了显示搜索结果错误。
其实搜索 【齟】或者【齬】都不会错的。就算给她搭上【齟a】这样搜索也都还是会转对的。但是两个粘起来,就错了。这是为什么呢?
【齟齬】变成了 【e r】三个字符er中间有空格。
216322;齟;U+9F5F
216327;齬;U+9F6C
e:101;e;U+0065
:32; ;U+0020
r:114;r;U+0072
再来看看编码范围;
----------------------------------------------
GBK
编码范围: 0×8140 - 0xFEFE
BIG5
编码范围: 0xA140 - 0xF9FE, 0xA1A1 - 0xF9FE
GB2312
编码范围: 0xA1A1 - 0xFEFE
汉字范围: 0xB0A1 - 0xF7FE
GB18030
编码范围:
单字节、是0x00-0x7F,完全等同与ASCII;
双字节、编码范围和GBK相同,高字节是0x81-0xFE,低字节的编码范围是0x40 -0x7E和0x80-FE;
四字节、编码编码中第一、三字节的编码范围是0x81-0xFE,
Unicode
编码范围:
0-0x10FFFF,这个是个很大的值了。
-------------------------------------------------------
216322;齟;U+9F5F
216327;齬;U+9F6C
很显然。他们在GBK,GB18030,和Unicode里面。就是不在GB2312里。
但是问题应该不是出在这里,而齟齬单输入也能正常的识别,证明问题也不是繁简转换字码的问题。
打开Unicode发现齟齬是靠后CJK编码很后的字了。齟齬右边再过不到100个字符,CJK就完了。 估计百度写程序的时候没有考虑到很大的位数link起来。比如他们link起来之后就是 9F5F9F6C的小bug问题。就给越界了。
但是问题,【龃龘】他们又得到正确的显示。这个我就真不知道为什么了。
还得请高手作答。