LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 999|回复: 1

是Linux错了,还是我们大家都错了

[复制链接]
发表于 2004-5-5 23:30:09 | 显示全部楼层 |阅读模式
当你把一个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网站上下的,为什么不看中国的国家标准?
发表于 2004-5-5 23:56:45 | 显示全部楼层
是linux错啦
我也是给nls_cp936.c找了个补丁打上,才能正确显示ntfs分区上的中文名的
之前总是有一些文件不能正确识别
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表