linux文件在windows系统乱码

linux文件在windows系统乱码,第1张

Linux系统下,备份文件到常常会出现中文乱码,特别是在CLI模式下。一般通过修改/etc/i18n文件,将系统的字符集修改弯兄正确即可。孝滚但是,有时还是会出现乱码,在这种情况下,如果你想备份文件就需要用打包的方法了,就有以下几种方法:

通过工具

这种方法适用于知道备份的字符集

1.1 convmv

convmv -f GBK -t utf-8 --notest filename

把gbk的编码转成utf-8

1.2 enca

enca -L zh_CN -x UTF-8 filename

将文件编码转换为UTF-8编码

1.3 iconv

iconv -f gbk -t utf-8 -o outfilename  infilename

-f为原来的编码方式,-t 为输出文件的编码方式, -o表示输出文件名,这巧闹余利用outfile表示,最后跟上要更改编码方式的文件名sourcefile

通过打包

这种方法适用于i18n 和 locale 不一致时。

请点击输入图片描述

1、这是zip格式的缺陷,zip文件格式中没有字段标志出文件名的编码格式。Windows下生成的zip文件中的编码是GBK/GB2312等,而linux下的默认编码格式为UTF-8,所以才会出现乱码。

2、解决方法

1、使用unzip解压的时候,指定字符集(需要unzip支持,有些unzip命令不支持大O选项,自己可以安装较新的unzip版本):

md5@crc4:~/$ unzip -O CP936 test.zip

2、借助于p7zip和convmv:

a、在Fedora下的命令是

su -c 'yum install p7zip convmv'

b、在ubuntu下的安装命令是

sudo apt-get install p7zip convmv

安装完之后,就可以用7za和convmv两个命令完成解压缩任务。

LANG=C 7za x your-zip-file.zip

convmv -f GBK -t utf8 --notest -r .

说明:

1)、第一条命令用于解压缩,而LANG=C表示前余扰以US-ASCII这样的编码输出文件名,如果没有这个语言设置,它同样会输出乱码,只不过是UTF8格毁颂式的乱码(convmv会忽略这样的乱码)。

2)、第二条命令是将GBK编码的文件慧旦名转化为UTF8编码,-r表示递归访问目录,即对当前目录中所有文件进行转换。

Linux下读取橘物蔽文件名乱蚂亮码可能的原因是:

1.linux系统默认编码不支持中文字符

2.文件名本身是乱码

解决圆州方案是在读取文件名的时候,要进行显式的编码转换如下:

FileInputStream fis = new FileInputStream("fileName")

InputStreamReader isr = new InputStreamReader(fis,"utf-8")


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8161067.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存