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

原链接: https://community.bwbot.org/topic/65
运行测试平台:小强ROS机器人

乱码问题主要分为文件名的乱码问题和文件内容的乱码问题。文件内容的乱码问题比较容易解决。只要文件编辑器有选择编码的功能(比如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参数指定文件名的编码类型就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值