WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

linux下将中文文件名文件cp到windows目录下后文件名乱码问题的解决

更新时间:2012-10-09 13:44 作者:taolinke点击:

linux中,我的LC_ALL环境是zh_CN.gbk。

当我把中文文件名文件cp到windows的fat32盘下后,重起进入windows后发现文件名全是乱码。

 

首先google,baidu了下,发现都推荐用convmv,这个工具是用perl编写的,确实非常好用的工具,不过在我这里它不适合。

 

----------------------------------我是华丽的分割线---------------------------------

 

还是拿具体例子来说话,比如说文件,政治.txt,先说下造成乱码的根本原因,在windows下用winhex查看后,发现,

那些文件名确实是gbk编码,只不过,编码给分开了。

 

政治,gbk编码 D5FE D6CE ,可是在硬盘上存储的时候却变成了,D500 FE00 D600 CE00。就算没有多出这些00,我自己手动

改成 D5FE D6CE也不可以,因为windows下用的是unicode编码。

 

----------------------------------我是华丽的分割线---------------------------------

尝试下在linux中用convmv把gbk转成unicode看看,不过之前,先用hexedit看下。

 

无法转换成unicode,ucs-2le或者utf-16le,因为linux不支持,这个编码的文件名...

结果发现,hexedit不能看文件名,它只是看内容的。

 

----------------------------------我是华丽的分割线---------------------------------

从linux再在ntfs下面写个文件名看看,是不是也是乱码。

 

这个发现不是乱码,并且用这个方法成功解决问题。

 

解决方法:把乱码的文件和文件夹,在linux下,从fat32盘,cp到/root,然后再mv到ntfs盘,就ok了~。

----------------------------------我是华丽的分割线---------------------------------

问题总结:

 

                    自己费了好多时间,10几个小时,研究怎么在fat32上面恢复中文,除了手工自己修改外,

在linux下面用convmv怎么都不行。因为linux内置支持utf-8,可是不支持utf-16。

所以在最后执行rename 操作时,识别不了utf-16的文件名而报错。

 

不过,倒是因为这个问题,我对编码的各种方式和区别,还有转化方法,有了更好的认识~

 

----------------------------------我是华丽的分割线---------------------------------

原因分析:

                        在挂载 我的fat32盘时,mount设置了编码方式为gbk. ntfs没有发现用什么设置,

                        难道这个是原因?再进入linux自己研究下。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
你可能感兴趣的内容