LinuxSir.cn,穿越时空的Linuxsir!

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

问一个文件名转码的问题

[复制链接]
发表于 2006-3-31 12:20:12 | 显示全部楼层 |阅读模式
我有一个fat32分区挂载在linux下/mnt/win charset=gb2312 codepage=936
我使用了移动硬盘挂载在/mnt/usbdisk1下,挂载的时候是mount 默认挂载的没有使用charset和codepage
也是fat32分区
在/mnt/win下中文名都是能正常显示的,无论是在linux下还是windows下
当我在shell使用cp命令从/mnt/win 拷贝到/mnt/usbdisk1大量资料后,发现移动硬盘在windows下中文显示乱码,而在linux下是正常的
我尝试了convmv但无论如何转码都是在window下不能正常显示文件名
OS: RH9
shell env:  LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN
          LANG=zh_CN.GB18030
我尝试convmv -f gb18030 -t gb2312 /mnt/usbdisk时提示我无法使用gb18030编码
谁知道怎么作,哪为高手指点一下,

PS:
而且我发现在windows下编辑的中文文件名在linux下移动硬盘也是不能正常显示,但是在硬盘上的fat32分区上编辑的文件两个系统都能正常显示.

后来我又尝试了使用了一样的条件charset=gb2312 codepage=936挂载usb硬盘,发现windows下编辑的文件名在移动硬盘上还是不能显示,这是为何?
发表于 2006-3-31 12:25:13 | 显示全部楼层
在非Linux native的文件系统上是不能用convmv直接改变文件名编码的,只能通过挂载选项完成IO转码。

iocharset=gb2312 codepage=936

但为什么移动硬盘不能显示中文名,有点不解。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-31 13:25:07 | 显示全部楼层
是的,我也不知道为什么不能显示,如下图,能显示中文名的是我从/mnt/win 下拷贝到移动硬盘上的,而"?????????.txt"则是在windows上编辑起的中文名字,
而linux下能正常显示的中文文件名"混在北京全功略.txt"到了windows下文件名却是乱码,
最奇怪的就是这个同样的文件,在硬盘上windows和linux都是能正常看到文件名的,拷贝到移动硬盘上,windows下就是乱码了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2006-3-31 13:40:27 | 显示全部楼层
-o iocharset=gb2312,codepage=936

不过还是奇怪。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-3-31 14:14:31 | 显示全部楼层
非常感谢楼上的热心回复,设置iocharset=gb3212,linux是能正常显示windows的文件名了,
但非要在这个设置下重新拷贝一遍才能所有资料才能使windows下显示正常么?
回复 支持 反对

使用道具 举报

发表于 2006-3-31 15:04:37 | 显示全部楼层
看来你真是打错了,但按理会有错误,挂载不上的。现在你还可以直接改名。
回复 支持 反对

使用道具 举报

发表于 2006-3-31 15:05:37 | 显示全部楼层
看来你真是打错了,但按理会有错误,挂载不上的。现在你还可以直接改名。
回复 支持 反对

使用道具 举报

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

本版积分规则

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