以下是我自己的分析,如有错误,请不吝指正!
结论:
中文版本windows默认使用GB2312编码(代码页936),所以设置卷标时写入到U盘中的卷标名称字符也是GB2312编码。而linux默认使用的是UTF8编码,所以卷标会显示成乱码。另外mount挂载磁盘时指定的iocharset=utf8仅对U盘中的文件名有效,对卷标不生效,所以在windows上设置的中文卷标不能在linux上正常显示。
分析过程
在Ubuntu上设置中文卷标:
1. 在ubuntu 18.04上运行gnome-disks->选中U盘->Edit Filesystem... ,输入卷标"HT好T"
2. 重新插拔U盘,可看到卷标中文可正常显示
3.此时用hexdump查看结果并搜索HT:
sudo hexdump -C /dev/sdb1 | less
可看到“好”对应的编码值为“e5 a5 bd”,此编码刚好是UTF8的编码值:
在Win10上设置中文卷标
1. 在windows上同样设置U盘卷标为"HT好T":
2.接到ubuntu18.04,可看到挂载后未显示中文字符
3.用hexdump查看卷标的字符编码值,可看到“好”对应的是GB2312的编码值“ba c3”