2009年3月31日星期二

windows下解压linux、unix平台TAR包的乱码问题

作者:张宇,北亚硬盘数据恢复中心,转载请联系作者,如果实在不想联系作者,至少请保留版权,谢谢。

  这篇文章的部分观点是我的个人看法,可能会有错误,希望大家指正。
  WINDOWS与LINUX/UNIX对文件系统字符集的处理方式是不相同的。WINDOWS文件系统驱动层本身就有对字符集转换、处理的模块,无论从操作系统上下达的是什么字符集,最后要统一转换到不同文件系统的字符处理模块上,比如存储在NTFS上的文件名称,现在几乎统一以$I30方式索引,采用UNICODE方式存储。而LINUX/UNIX则不同,文件系统驱动层本身并不负责对字符集的处理,操作系统传下来的文件名称以字节流的方式直接记录进文件系统索引结构,并不去理解字符集,所以,在同一个LINUX/UNIX文件系统中,可以允许目录结构中有多种不同的字符集存在。
  如果在LINUX/UNIX下对某些文件做了tar包,tar包里便直接记录从文件系统上读到的名称字节流,那如果这个TAR包在WINDOWS下解压,便很有可能会出现乱码,或无法解压。其实解决的办法很简单,只要把WINDOWS调整成不同的字符集,解压对应的文件即可,只是这个对应需要人工去判断了。
  打开WINDOWS的控制面板,选择“区域和语言选项”,再移至“高级”选项卡上,在“选择一种语言,使之与您使用的非UNICODE程序的语言。。。。”一项上选择相应的字符集。然后,将tar包里对应这个字符集的文件解压到NTFS文件系统上,这些文件就会自动转换成UNICODE通用字符集。再换成其他字符集,解压,就可以把别的字符集也转换成UNICODE了。
  很多NAS设备,由于用户使用的字符集可能不同(典型的,香港、台湾地区、大陆的联合企业使用的NAS),这样如果对NAS数据做备份后,想在WINDOWS上解开,网管对LINUX又不熟,用这个方法可能能容易的解决。

没有评论:

发表评论