从Windows复制文件到Linux显示乱码问题详解程序员

(1).文件名乱码

  这并不是所有人都会碰到的问题,一般常见于使用putty的用户。使用convmv命令可以解决这个问题。

  我写详细一点还原真实场景,首先我来上传一个测试文件“a此文件在windows下打开正常-到linux下vim打开乱码.txt”。在确保putty可以正常连接到Linux上,打开Windows上的命令提示符输入pscp命令(pscp [Windows上的文件位置,可以绝对路径,可以相对路径] [以什么用户登录Linux]@[Linux的IP地址]:[传到Linux上什么位置,绝对路径])。

C:/Users/xuefei>pscp c:/Users/xuefei/Desktop/a此文件在windows下打开正常-到linux 
下vim打开乱码.txt [email protected]:/home/xf/ 
[email protected]'s password: 
a此文件在windows下打开正?| 0 kB |   0.1 kB/s | ETA: 00:00:00 | 100% 

  这就上传好,下面我们来Linux下看看上传后的文件

[[email protected] ~]$ ls 
1                                                  secondDir  视频  下载 
a???ļ???windows?´???????-??linux??vim????????.txt  公共       图片  音乐 
mainDir                                            模板       文档  桌面 

  可以看到有一个a开头的乱码文件名,看一下自己有没有convmv命令,没有就yum安装一下,记住这时需要使用root用户

[[email protected] ~]# yum install convmv 
已加载插件:fastestmirror, langpacks 
Loading mirror speeds from cached hostfile 
 * base: mirrors.cn99.com 
 * extras: mirrors.aliyun.com 
 * updates: mirrors.cn99.com 
CentOS7                                                  | 3.6 kB     00:00   

  安装完convmv命令,可以–help一下看看如何使用。这里会使用到-f选项(源文件编码格式),-t(想要的格式),–notest选项(文件重新命名)。如果是目录还需要-r选项(遍历目录)

[[email protected] ~]# convmv -f gbk -t utf8 --notest /home/xf/a���ļ���windows�´�������-��linux��vim��������.txt  
mv "/home/xf/a���ļ���windows�´�������-��linux��vim��������.txt"	"/home/xf/a此文件在windows下打开正常-到linux下vim打开乱码.txt" 
Ready! 
[[email protected] ~]# ls /home/xf/ 
1                                                    secondDir  视频  下载 
a此文件在windows下打开正常-到linux下vim打开乱码.txt  公共       图片  音乐 
mainDir                                              模板       文档  桌面 

  看,这就完成了。

注意:Windows编码是gb2312,我的Linux编码是UTF-8。想要看自己的编码可以使用locale查看。详细了解可以看   https://www.cnblogs.com/diantong/p/10200145.html

[[email protected] ~]$ 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" 
LC_ALL=

(2).文件内的乱码

  转换完文件名的乱码其实并没有结束,因为文件内容还是乱码

[[email protected] ~]$ cat a此文件在windows下打开正常-到linux下vim打开乱码.txt  
#!/bin/bash 
echo 'ѧϰ' 
echo 'ѧϰ' 
echo 'ѧϰ' 
echo 'ѧϰ' 

  这时需要用到iconv命令,没有yum安装一下。这里会用到-f选项(源文件格式),-t选项(想要的格式),-o选项(输出文件)

[[email protected] ~]$ iconv -f gbk -t utf8 a此文件在windows下打开正常-到linux下vim打开乱码.txt -o a此文件在windows下打开正常-到linux下vim打开乱码.txt  //我这里将编译后的文件输出到源文件 
[[email protected] ~]$ cat a此文件在windows下打开正常-到linux下vim打开乱码.txt  
#!/bin/bash 
echo '学习' 
echo '学习' 
echo '学习' 
echo '学习'

(3).扩展

  如果你对文件名没有要求,或文件名输入并不复杂,可以将直接使用iconv命令重新给一个新的文件名

[[email protected] ~]$ ls 
1                                                  secondDir  视频  下载 
a???ļ???windows?´???????-??linux??vim????????.txt  公共       图片  音乐 
mainDir                                            模板       文档  桌面 
[[email protected] ~]$ iconv -f gbk -t utf8 a���ļ���windows�´�������-��linux��vim��������.txt -o a.txt 
[[email protected] ~]$ ls 
1                                                  mainDir    模板  文档  桌面 
a???ļ???windows?´???????-??linux??vim????????.txt  secondDir  视频  下载 
a.txt                                              公共       图片  音乐 
[[email protected] ~]$ cat a.txt  
#!/bin/bash 
echo '学习' 
echo '学习' 
echo '学习' 
[[email protected] ~]$ rm a???ļ???windows?´???????-??linux??vim????????.txt 
[[email protected] ~]$ ls 
1  a.txt  mainDir  secondDir  公共  模板  视频  图片  文档  下载  音乐  桌面 

  

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/2794.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论