有个关于移动硬盘内文件名编码转换的问题

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
pchu
帖子: 9
注册时间: 2009-02-18 23:46

有个关于移动硬盘内文件名编码转换的问题

#1

帖子 pchu » 2010-07-27 19:48

是个fat32格式的盘,以前用partition magic还是gparted格式化出来的,编码是utf8
后来接在一个简陋的ubuntu(只有fvwm能用,准备重装)上,往里面放东西
那时凭记忆手动mount,忘了加iocharset=utf8,所以mount的默认是iso8859-1
东西放进去了,再连到windows上一看,中文文件名乱码了
于是接回到ubuntu上,mount -o iocharset=iso8859-1的时候,显示文件名正常;mount -o iocharset=utf8的时候,文件名乱码

所以我用utf8编码mount上去,然后用 convmv -f iso-8859-1 -t utf8 -r --nosmart
但是dry run的结果还是mv "...乱码" "...乱码",虽然不是同一个乱码

有人知道为什么吗?
pchu
帖子: 9
注册时间: 2009-02-18 23:46

Re: 有个关于移动硬盘内文件名编码转换的问题

#2

帖子 pchu » 2010-07-27 20:29

那个……
我知道原因了……
from 和 to 反了……
本来我在想,文件写入的时候用的是iso8859-1,所以应该是from iso8859-1 to utf8

其实相反
用mediacoder作比喻(因为前一阵子在用),从逻辑上讲from是“解码器”,to是“编码器”。虽然实际上convmv应该是用from的信息进行编码,用to的信息进行解码……

原始的字串信息用了iso8859-1编码后写入硬盘,然后我用iocharset=utf8(解码)读出,得到乱码
所以要把程序逆转:
先用utf8“编码”得到硬盘内的储存内容(类似于mediacoder把视频文件内容解码成视频流)
然后用iso8859-1“解码”得到原始的字串信息(类似于mediacoder把视频流编码成新格式的文件)

所以是 -f utf8 -t iso8859-1
不过好奇怪,我google出来的关于修正乱码的文章貌似都是 -t utf8 ……难道没人发现刚好相反么??
回复