在Novell网上使用汉字文件名引起的问题

Author: 福建 王峰 Date: 1996-09-20

       在汉字系统中,汉字以内码的形式存储在磁盘上。目前汉字内码广泛采用双字节的位标识型码,它采用两个字节表示一个汉字,利用字节的最高位置1作标识,而西文的内码为7位编码,字节的最高位是不用的(置为0),故这种汉字内码与西文内码不发生混淆。Novell Netware是属西文网络操作系统,以西文处理为基础,在处理汉字文件名时有时会出现问题。例如有一文件,名为“通知.WPS”,在单机上复制此文件很正常,但将其由硬盘复制到网络盘时总是出现文件创建错误。由NCOPY命令执行时的出错信息看出,网络操作系统将“知”等同于“*”,这样在网络盘上创建的文件名中含有通配符“*”,自然引起创建文件错误。“*”的内码(即ASCII码)为十六进制的D6 2A,而“知”的内码为D6 AA,可见网络操作系统将AA等同于2A,从而引起错误,AA与2A的区别在于:AA的最高位为1,2A的最高位为0。由于“?”与“*”同属文件名通配符,因此“?”也可能有类似问题。“?”的ASCII码为3F,等同于BF。经过上机试验,证实了下述想法:只要在汉字内码的两个字节中有一个字节为BF或AA,均会导致文件中含有此汉字的文件在Novell网上出现创建错误。由于汉字内码与区位码之间存在下面的关系:位号=内码高位字节-160,区号=内码低位字节-160,因此从区位码的角度说,只要区号为10或31,或位号为10或31的汉字、符号均会导致上述错误。例如:俊、看、课、科、况、华等。因此在Novell网上使用汉字文件名时务须注意这一点。