1
SolidZORO OP 后来试了一下搜索 “無敵”。变成了“无敌”。 看来baidu是在简/繁转换的时候把自己给搞挂了。导致了悲剧发生。
|
2
freefcw 2011-03-10 21:18:21 +08:00
寨厂内部人士说,内部编码太多, suggestion 支持搜索不支持
|
4
est 2011-03-10 22:02:08 +08:00
这个可能是windows的特例?因为 齟齬 是GB 18030 里的。然后windows下的gbk默认就是gb18030,而且有3、4字节。
|
5
SolidZORO OP @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问题。就给越界了。 但是问题,【龃龘】他们又得到正确的显示。这个我就真不知道为什么了。 还得请高手作答。 |
6
zainix 2011-03-11 11:56:46 +08:00
VPN + Google吧, 用百度能做什么!?
|
7
lianghai 2011-03-11 12:42:33 +08:00
赞考据。不过,“3 位 Unicode”是什么?
|
8
SolidZORO OP 理论上 一个汉字可以由2byte搞定,当然,这是在GB2312下。
而在Unicode下,是4byte。 有人为了减少储存空间(同事也提高了搜寻的效率)。给Unicode动了一下手脚,把原来Unicode范围\0x000000 ~ \0x10FFFF,改成最常用的范围: \0x0000 ~ \0x10FF,(其实最常用的字符在\0x4E00 ~\0x9FA5,即CJK Unified Ideographs。) 这样显示GB2312,Big5什么的都没问题了。 |