|
当你把一个windows分区mount上时,你会发现一些文件会报错,在桌面上时会显示一个白色图标点后说文件不存在。
我仔细看了一下,比如带年、了等字的都会这样
看核心中nls_cp936.c(自说是GB2312,其实是GBK的码表),发现用的编码是unicode的一个新的集合,而我们用的98,2000,都是标准的GBK,2003虽然认识但也并不使用这个集合,再有就是国产的字库(除了微软的大多是国产的)都是用的国家公布的GBK-2000。1集合,而在核心文件中是用的另外一个(我一直没找到国家有关文件),而象年、了之类当然就显示不了了。
再有就是文件并不区分多字节变长汉字(如果是GB18030,应该区别汉字为变长的),所以很难说是不是GBK。
我用标准的码表重写了此文件后又发现u2c函数少了00区(这个区里是一些符号,这此符号在GB2312中这已定义如外文人名中的点00B7(unicode)A1A4(GB2312)),所以把函数也略加改动,
结果是一切OK
不知道为什么用这么个表。
在文件中说是从windows网站上下的,为什么不看中国的国家标准? |
|