LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1396|回复: 7

中文UTF8 Locale下使用U盘经验一则

[复制链接]
发表于 2005-8-21 15:44:04 | 显示全部楼层 |阅读模式
前几年,大家用Linux时多使用GBK或GB2312 Locale,挂载U盘时一般加上iocharset=cp936的选项。改用zh_CN.UTF-8后,发现u盘上的文件名总是乱码。试验去掉iocharset=cp936也不行,甚至更糟。仔细研究发现,mount vfat文件系统(一般U盘的文件系统)时iocharset缺省是iso8859-1。这样就找到解决办法。下面是个实验:

1. 在winxp下建立个“新建文档-winxp.txt”,拷贝到U盘上;

2. Linux下不用选项挂载u盘(mount -t vfat /dev/sda1 /mnt/ud),该文件名乱码。

3. 加上cp936选项,mount -t vfat -o iocharset=cp936 /dev/sda1 /mnt/ud,仍为乱码。用convmv命令转换文件名编码(convmv -f gbk -t utf8 *),出现“Skipping, already UTF-8”的信息。令人怀疑iocharset=cp936是不是加错了。

4. 使用utf8选项:mount -t vfat  -o utf8 /dev/sda1 /mnt/ud;文件名正确显示!

    总结:mount u盘时使用utf8选项,可解决与windows的文件交换问题。以前未使用utf8选项导致linux下乱码,又无法使用convmv命令改名的,可以试试用cp936选项挂载u盘,把这些文件拷贝到u盘上,再用utf8选项挂载即可。

    至于以前从Linux上拷到u盘的utf8文件名文件,使用utf8选项后会变成乱码。用上面说的方法,用不同选项挂载u盘,在系统和u盘间来回拷贝两次即可。有句老话:从哪儿跌倒,就从哪儿爬起来。遇到同样问题的朋友试试看。
发表于 2005-8-21 20:12:15 | 显示全部楼层
支持

我顶!
回复 支持 反对

使用道具 举报

发表于 2005-8-21 20:59:32 | 显示全部楼层
too ooooooooold
回复 支持 反对

使用道具 举报

发表于 2005-8-21 21:05:29 | 显示全部楼层
mount -t vfat -o utf8 /dev/sda1 /mnt/ud;
                     ^^^^^我的是-o iocharset=utf8
xp下默认应该是cp936的编码吧
回复 支持 反对

使用道具 举报

发表于 2005-8-21 21:56:24 | 显示全部楼层
标准做法:
/dev/hda2 /mnt/hda2 ntfs gid=disk,fmask=113,dmask=002,umask=022,nls=utf8,ro,noauto 0  0
/dev/sdb1 /mnt/usb00 vfat utf8=1,gid=disk,fmask=113,dmask=002,umask=022,noauto 0 0
分别用于ntfs与fat32,百试百灵,而且fat32下创建中文文件夹也没有问题。不过你的内核必须是2.6的。
回复 支持 反对

使用道具 举报

发表于 2005-8-22 09:24:59 | 显示全部楼层
楼上的可以解释一下吗?
utf8=1是什么意思?
gid指什么?
fmask=113,dmask=002,umask=022呢?我一般只写umask=000,其他2个没有写。
回复 支持 反对

使用道具 举报

发表于 2005-8-22 10:17:03 | 显示全部楼层
/dev/hda2 /mnt/hda2 ntfs gid=disk,fmask=113,dmask=002,umask=022,nls=utf8,ro,noauto 0 0
/dev/sdb1 /mnt/usb00 vfat utf8=1,gid=disk,fmask=113,dmask=002,umask=022,noauto 0 0
能不能他们的意思好吗?
回复 支持 反对

使用道具 举报

发表于 2005-8-22 10:28:39 | 显示全部楼层
难道你们都不看
man mount的么???
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表