大家好,很高兴再次与你们见面,我是你们的朋友全栈君。
在Windows系统上,文件名通常采用GBK编码,而文件内容的编码可以通过文本编辑器如EditPlus来查看或设置。
当将在Windows上正常显示的文件传输到Linux系统时,常常会因为中文编码问题导致文件名和文件内容出现乱码。
查看Linux系统的编码设置:
[root ~]# echo $LANG zh_CN.UTF-8 [root ~]# locale LANG=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" LC_TELEPHONE="zh_CN.UTF-8" LC_MEASUREMENT="zh_CN.UTF-8" LC_IDENTIFICATION="zh_CN.UTF-8" <p>LC_ALL=
以上是基于CentOS 6.5的查询和设置。之前设置为USA.UTF-8,后来调整为支持中文的zh_CN.UTF-8,需要安装支持中文的软件包:
yum -y groupinstall chinese-support
修改和设置编码:
[root ~]# vim /etc/sysconfig/i18n LANG="zh_CN.UTF-8"</p><p>[root ~]# source /etc/sysconfig/i18n
完成上述设置后,可以使用XFTP和XSHELL进行以下实验。
在XSHELL中,通过文件 -> 属性 -> 终端设置编码进行设置,XFTP暂时不做设置。

一、解决Linux文件名乱码问题:

在XFTP中,中文显示一切正常。
file命令查看文件:
此时进行转码操作:
convmv --notest --nosmart -f gbk -t utf8 -r 文件或者目录
参数说明:
-f:从什么编码转换-t:转换成什么编码--nosmart:如果已经是UTF-8,忽略-r:包含所有子目录--notest:不加此参数只会列出需要转换的文件,不做实际转换,所以必须加上
通过上述步骤,已经解决了文件名乱码问题。接下来设置XFTP的编码以匹配Linux的编码。


二、解决文件内容乱码问题:
cat命令查看文件内容时发现乱码:
iconv命令进行转码:iconv -f gbk -t utf8 test测试.txt -o test测试.txt
通过测试,已经成功将文件内容乱码转码。
同时,如果不希望覆盖原文件,可以使用以下命令:
iconv -f gbk -t utf8 haha.txt > haha.txt.utf8
这种方法不会覆盖原文件,但原文件将为空。

yum install -y dos2unix dos2unix xxx.sh

通过上述两种方法,基本解决了从Windows到Linux系统的文件名和文件内容乱码问题。如果遇到新的问题,将会继续补充。
发布者:全栈程序员栈长,转载请注明出处:https://www.php.cn/link/87a57c9dce29e600b772912ff1c4c1c7 原文链接:https://www.php.cn/link/c8377ad2a50fb65de28b11cfc628d75c
以上就是window到linux文件名乱码和文件内容乱码解决总结「建议收藏」的详细内容,更多请关注php中文网其它相关文章!
Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号