ROS Group 产品服务
Product Service 开源代码库
Github 官网
Official website 技术交流
Technological exchanges 激光雷达
LIDAR ROS教程
ROS Tourials 深度学习
Deep Learning 机器视觉
Computer Vision
Linux下访问Windows文件的乱码问题
-
乱码问题主要分为文件名的乱码问题和文件内容的乱码问题。文件内容的乱码问题比较容易解决。只要文件编辑器有选择编码的功能(比如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
参数指定文件名的编码类型就可以了。