Linux_windows下文件名和内容乱码

时间:2022-11-25 19:15:26
一、利用iconv命令进行编码转换文件内容编码转换  iconv命令用于转换指定文件的编码,默认输出到标准输出设备,亦可指定输出文件。  用法: iconv [选项...] [文件...]  有如下选项可用:  输入/输出格式规范:  -f, --from-code=名称 原始文本编码  -t, --to-code=名称 输出编码  信息:  -l, --list 列举所有已知的字符集    输出控制:  -c 从输出中忽略无效的字符  -o, --output=FILE 输出文件  -s, --silent 关闭警告  --verbose 打印进度信息  -?, --help 给出该系统求助列表  --usage 给出简要的用法信息  -V, --version 打印程序版本号    例子:  iconv -f utf-8 -t gb2312 aaa.txt >bbb.txt  这个命令读取aaa.txt文件,从utf-8编码转换为gb2312编码,其输出定向到bbb.txt文件。
二、文件名编码转换
查看文件编码(如果你的系统中没有安装这个命令 apt install enca)
$ enca filename
需要说明一点的是,enca对某些GBK编码的文件识别的不是很好,识别时会出现:
Unrecognized encoding


文件名编码转换
convmv -f GBK -t UTF-8 --notest *.mp3

convmv -f GBK -t UTF-8 -r --notest the/directory


ps: convmv 转码后的文件 在windows下文件名又是乱码


三、xftp,filezilla 第三方ftp客户端
第三方ftp客户端也是造成windows > linux 乱码的原因之一
如果在window下ftp客户端默认使用本地编码,所以会导致上传到server的文件名使用了错误的编码导致乱码
解决方法: 设置ftp客户端编码
xftp:  文件 > 属性 > 选项 > "连接"中勾选"使用UTF-8编码"
filezilla: 文件 > 站点管理器 > 站点 > 字符集 中 勾选 "强制UTF-8"