您的位置:首页 > 运维架构 > Linux

Linux下访问Windows文件的乱码问题

2017-06-27 10:05 1171 查看
原链接: https://community.bwbot.org/topic/65

乱码问题主要分为文件名的乱码问题和文件内容的乱码问题。文件内容的乱码问题比较容易解决。只要文件编辑器有选择编码的功能(比如atom),选择正确的文件编码就可以了。一般如果在linux下打开windows的文件出现乱码,把编码方式设置成GBK或者GB18030就可以了。如果在windows下打开Linux下创建的文件发现有乱码,把编码方式设置成UTF-8就可以了。下面重点说一下文件名乱码的问题。

文件名为什么会出现乱码?

这个要从文件系统说起。文件保存到硬盘上,不仅文件的内容要保存上去,文件的名字,创建时间等等元数据(meta data)也要保存到硬盘上。对于文件名这样的字符串数据,只要保存就会面临着编码的问题。Windows 默认的编码方式是GB18030(这个和GBK基本通用)。而Linux的默认编码方式是UTF-8。这就是乱码产生的罪魁祸首。所以其中一个系统创建的文件,在另一个系统看来就是乱码。

如何解决乱码问题?

解决方式很简单,只要把两个系统的编码方式改成一样的就行了。 Windows的编码方式是没办法进行修改的。但是Linux的编码方式是可以修改的。具体的设置文件就是
/etc/fstab
。这个文件设置硬盘分区的挂载方式,里面就包含了编码方式。对于不同格式的文件系统设置的方式也是不一样。

对于Fat32格式的分区设置如下

UUID=7905-27D8 /media/randoms/WORKS vfat iocharset=utf8,codepage=950,rw,user,exec,umask=

000 0 0


UUID后面跟的是硬盘分区的UUID,这个可以通过
sudo blkid
来获取。

第二项是硬盘的挂载点。

再后面的参数就是具体的文件系统格式

然后就是具体的挂载选项,比如编码方式,读写方式等等。照着上面设置就没有问题了。codepage=950是GBK的编码方式,经过测试是没有问题的。

对于nfs格式的分区就更容易了

UUID=00045BDB000D47A2 /media/randoms/softwares ntfs rw,user,exec,umask=000 0 0


格式完全是一样的,但是nfs不用设置编码方式,因为编码方式是写在硬盘上的。可以看出来nfs也更智能一些。

解压文件还是有乱码

如果在windows下压缩了一个zip文件,到Linux下解压会发现文件名全是乱码。这个问题产生的原因和之前的乱码问题基本一致。因为压缩的时候采用的是GB18030编码,解压的时候是UTF-8。解决起来也非常容易。

unzip -O GBK filename


加上
-O
参数指定文件名的编码类型就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  windows linux-乱码