插入 U 盘 (FAT文件系统)后
造成这种现象的原因是:挂接 U盘 的时候没有指定相应的字符编码集。
解决的方法也比较简单,就是先卸载挂接的 U盘 ,然后再重新挂接,只不过在重新挂接的时候要指定编码集。
下面以正点原子阿尔法 linux 开发板的出厂文件系统为例进行讲解。
当插入U盘后,如何查看当前挂载的内容呢?(在【正点原子】I.MX6U 开发板文件拷贝及固件更新参考手册V1.2.pdf 中也提到了,这里只是截图)
首先,
之后,
也就是说 我们插入的 U盘 挂接在 /run/media/sda1 这个目录下了。
下面再来详细说说如何解决中文显示的问题。
需要用到两个 Linux 命令 - mount(挂接) 和 umount(卸载)
对于 umount 而言,很简单。直接是 umount + 要卸载的目录。比如这里要卸载的是 /run/media/sda1 下的目录。
卸载之前,文件中的内容是这个样子:
使用 umount 命令来卸载:
root@ATK-IMX6U:/run/media# umount sda1/
注意:我这里进入到 media 目录后才输入的命令。
卸载之后,再尝试进入 sda1/ 看看,
会发现没有内容了,这就说明卸载成功了。
下面再来使用 mount 命令来挂接这个 U盘,并在挂接时指定字符编码集。
root@ATK-IMX6U:/run/media# mount -o iocharset=cp936 /dev/sda1 ./sda1/
注意:我这里进入到 media 目录后才输入的命令。
边做边写的,写到这,我又重新做了一遍,我真是日了狗了,TMD 再试上面这句代码居然不灵了。给我报出下面这个问题:
为了证明,我一开始是成功的,我把成功的那次截图也放在下面:
真是的,服气了!!!
后面又是重启开发板好多次,依然是这样,难道成功的那次是巧合?憨憨!!!
算了,我现在将 cp936 换成了 utf8 试了试,虽然会报提示,但是好歹能显示中文。
命令如下:
root@ATK-IMX6U:/run/media# mount -o iocharset=utf8 /dev/sda1 ./sda1/
注意:我这里进入到 media 目录后才输入的命令。
显示效果如下:
报的提示是下面:
意思是:FAT-fs (sda1): utf8 不是 FAT 文件系统推荐的 IO 字符集,文件系统将区分大小写!
我想了下:造成这种现象是不是也有可能是优盘的问题,毕竟我这个优盘质量不是很好。
所以,如果再次遇到这个问题,可以先首先试试 cp936 ,不行的话就试试 utf8 吧,不纠结了。
最后,再来说一下挂接的这句代码。
mount -o iocharset=cp936 /dev/sda1 ./sda1/
mout 表示挂接命令,
-o [option] 表示命令选项,这里 option 为 iocharset 指定字符集,
/dev/sda1 是要挂接的设备,
./sda1/ 是挂接在哪个目录下,这里是 sda1/ 这个目录下。
补充:一般还有 -t 参数来指定要挂接的这个设备是什么文件系统,但通常不进行指定,因为系统会自动识别。
补充:CP936其实就是GBK,IBM在发明Code Page的时候将GBK放在第936页,所以叫CP936。
如果要进行完善,可能就要修改内核或者文件系统了吧,我这里使用出厂系统,只为图省事。