从Windows复制文件到Linux显示乱码问题

(1).文件名乱码

  这并不是所有人都会碰到的问题,一般常见于使用putty的用户,他们使用pscp和pftp传递文件。大部分伪终端都会自带一个专门用于传递文件的端口或软件,只要设置好就不会出现此问题。如果遇到了也不要害怕,使用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://www.cnblogs.com/diantong/p/10202228.html

时间: 2024-10-16 07:34:47

从Windows复制文件到Linux显示乱码问题的相关文章

linux html 文件 web 端显示乱码

在Apache htdoc 里用vi写了个html  但web 端显示乱码了 然后在html 里添加了一段 <head>         <meta http-equiv="Content-type" content="text/html; charset=utf-8"/> </head> 然后 就好了. 我把charset=urt-8 改成gbk 或者gb2312 都是乱码 然后我看了下/etc/sysconfig/i18n 里

复制文件夹时显示出错?这里有解决方案

为什么无法复制文件夹或文件夹会显示出错?遇到这种情况能解决吗?里面的数据恢有损坏吗?不用担心,看了这篇文件你所担心的问题都会解决. 当剪切或复制文件从电脑到移动USB设备(U盘,手机存储卡,移动硬盘)时,有时候会出现如下错误"文件无法复制,路径太深".这里列举了这个问题来尝试三种不同解决方案来解决之. 原因一:USB设备有问题.解决方案:选择安全删除USB设备,随后把USB设备从电脑上拔出,再次将USB设备插入电脑后进行数据剪切或复制:如果之后发觉问题并没有消失,再次安全删除USB设备

解决Ubuntu和Windows该文件乱码问题

1.转换文件内容编码 Windows在自然纯文本文件.当中国作为编码GBK,在Ubuntu下乱码,可以使用iconv命令转换: iconv -f gbk -t utf8 source_file > target_file 2.转换文件名称编码 Windows下压缩的zip文件,在 Ubuntu下解开时,中文文件名称会显示乱码.能够用convmv解决. 安装convmv: sudo apt-get install convmv 转换文件或文件夹: convmv -f gbk -t utf8 -r

[转载] linux下打开windows txt文件中文乱码问题

原文链接 在linux操作系统下,我们有时打开在windows下的txt文件,发现在windows下能正常显示的txt文件出现了中文乱码. 出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示 txt文件在linux环境下打开呈现了乱码状态. 解决方法:在linux用iconv命令,如乱码文件名为shujujiegou.txt,那么在终端输入如下命令: iconv -f gbk -t

linux下打开windows txt文件中文乱码问题 (转载)

转自:http://blog.csdn.net/imyang2007/article/details/7448177 在linux操作系统下,我们有时打开在windows下的txt文件,发现在windows下能正常显示的txt文件出现了中文乱码. 出现这种情况的原因为两种操作系统的中文压缩方式不同,在windows环境中中文压缩一般为gbk,而在linux环境中为utf8,这就导致了在windows下能正常显示 txt文件在linux环境下打开呈现了乱码状态. 解决方法:在linux用iconv

关于Linux与windows传递文件乱码问题

linux下一般是采用utf-8的编码,而我们在windows上编辑文件时是gb2312的编码.所以导致中文编码会乱码.要更正这个问题实际上很简单只要把文件转换成utf-8编码格式然后再导入就ok啦. 手动更改配置文件的命令: vi /etc/sysconfig/i18n 将LANG="zh_CN.UTF-8"修改为:LANG="zh_CN.GBK" 保存并关闭,运行下面的命令使配置生效: source /etc/sysconfig/i18n 将终端字符编码显示为简

从windows上传文件到linux,中文名乱码解决方法

上传一个名称为"一级页面.html"的文件到linux服务器 ll命令查看文件名是乱码 在windows上将html文件压缩为test.zip,上传到linux服务器 再在服务器上unzip解压,解压后文件名称就显示正常了. 此种方法对目录也有效.

Linux下windows中文文件乱码问题

table of content: 乱码问题 用gedit选择正确的字符编码打开文件 文件转码 总结 §乱码 Fedora安装时默认用UTF-8字符编码方式, 这么做有国际化的好处(和很多用utf-8的地方兼容), 但是也有兼容问题. 比如: 中文编码在windows下不是utf-8编码, 因为政策要求, 在中国销售的软件要用国标码 (即GBK, GB2312, GB18030(最新的)) 所以中文windows用GB18030的编码, 这就导致一个小问题. 在linux下打开windows的文

Linux解决乱码问题以及查看文件编码方式

在linux下操作windows下的文件,经常遇到文件乱码,现在就是不知道能不能改变linux系统的编码,就不要再对文件进行编码转换了 下面是昨天看的一点资料 如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件进行编码转换. 查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接