Linux 与 Windows 文件乱码问题

这几天需要在linux下用CNN跑数据,但是把数据和数据列表list上传到linux下时却出现了不少乱码的问题。将这两天碰到的编码问题简单的总结一下。

1.解压乱码问题

如果直接把windows下压缩的压缩包通过ftp,这里我用的是xftp传输到linux服务器的目录下,我这里用的是zip包压缩,在Linux环境中用unzip直接解压,会发现乱码,这里就是我们通常会碰到的解压乱码问题。主要原因是我们在压缩的时候里面的文件以及文件夹的名字都是根据当前环境大部分都是windows 中文 默认采用的GBK编码。因此如果在linux下直接解压,Linux下一般系统默认都是utf8编码,因此解压的时候也是会根据utf8的编码方式来decode,所以会出现乱码。

解决的方法是 加上CP936选项

unzip -O CP936 xxx.zip

这里的CP936,有些人可能不明白,其实最早的GBK编码,就是IBM定制的MBCS字符集,汉子编码正好在整个字符集中的936页,因此好多地方其实都是用CP936来代表GBK

2.文件读取BOM问题乱码

后来碰到的问题比较坑爹,就是我的txt文件是一个图片列表,列表中有中文路径,并且涉及到众多的文件夹,不可能把他修改成英文,因此在linux下GBK编码的txt文件放到Linux上是会出现乱码的。这里我们以尽量统一utf8格式的为好,为了处理方便。因此我在windows下用记事本,将ANSI编码的txt文件另存为utf-8格式。

但是!!!我还是碰到了最晕的问题

这里引入BOM的概念,一个文件在编码后打上特定的标记,当打开文件时读取这个标记来以相应的编码方式解码文件,这样就可以解决不少问题。但是很多编辑器并不统一,给我们带来了不少麻烦。这里常见的如UTF8,UTF16,会打上这样的mark标记

BOM_UTF8 '\xef\xbb\xbf'
BOM_UTF16_LE '\xff\xfe'
BOM_UTF16_BE '\xfe\xff'

这里我当时是需要把txt文件传到linux下默认是UTF8格式,因此直接用的windows记事本,后来读取的时候就报错了。可以看到在之后的unicode码流中最先出现的是\xef\xbb\xbf,可能是linux默认没有读取BOM头的问题,因此如果有文件需要传输的话,最好不要带BOM头到Linux中。这里用Notepad++,选择用UTF8-无BOM格式编码就OK。

再在linux中读取中文就不会乱码了。

Linux与Windows 解压乱码 UTF8BOM读取问题的更多相关文章

  1. Linux命令-压缩解压命令:gzip、gunzip

    gzip [选项] 源文件名(压缩前) gunzip [选项] 源文件名(压缩后) cd /tmp 切换tmp目录 rm -rf * 强制删除tmp目录下面所有的文件和目录 touch beijing ...

  2. 【Linux命令】Linux压缩及解压命令

    Linux压缩及解压命令 一.文件打包和压缩命令介绍 linux系统文件压缩格式,常用的有*.tar.gz.*.gz.*.zip.*.tar,还有*.rar..7z..bz2..tar.xz..tar ...

  3. Linux中如何解压iso类型文件

    在Linux下如何解压iso类型的文件呢? 可以使用mount命令来处理 [root@DB-Server tmp]# ls /tmp/rhel-server-5.7-x86_64-dvd.iso /t ...

  4. [转]Ubuntu Linux 安装 .7z 解压和压缩文件

    [转]Ubuntu Linux 安装 .7z 解压和压缩文件 http://blog.csdn.net/zqlovlg/article/details/8033456 安装方法: sudo apt-g ...

  5. linux压缩文件——解压方法

    linux下 tar解压 gz解压 bz2等各种解压文件使用方法 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar ...

  6. Linux命令之解压

    Linux命令之解压 使用tar命令解压.zip文件的时候,遇到如下异常, tar -xzvf guangwang.zip gzip: stdin has more than one entry--r ...

  7. Linux打包压缩解压工具

    第1章      Linux 打包压缩解压工具一.压缩.解压工具 compress/uncompress gzip/gunzip bzip2/bunzip2/ bzcat xz/unxz/ xzcat ...

  8. linux ubuntu12.04 解压中文zip文件,解压之后乱码

    在windows下压缩后的zip包,在ubuntu下解压后显示为乱码问题 1.zip文件解压之后文件名乱码: 第一步 首先安装7zip和convmv(如果之前没有安装的话) 在命令行执行安装命令如下: ...

  9. Linux解压乱码

    .向系统添加windows下的字符编码: sudo vim /var/lib/locales/supported.d/local 添加一下编码: zh_CN.GBK GBK zh_CN.GB2312 ...

随机推荐

  1. 最小生成树Kruskal算法(邻接矩阵和邻接表)

    最小生成树,克鲁斯卡尔算法. 算法简述: 将每个顶点看成一个图. 在所有图中找权值最小的边.将这条边的两个图连成一个图, 重复上一步.直到只剩一个图. 注:将abcdef每个顶点看成一个图.将最小权值 ...

  2. xshell下载文件到本地/上传文件到服务器

    xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz首先你的Ubuntu需要安装rz.sz(如果没有安装请执行以下命令,安装完的请跳过.其 ...

  3. php学习笔记:foreach循环访问关联数组里的值

    foreach循环可以将数组里的所有值都访问到,下面我们展示下,用foreach循环访问关联数组里的值. 例如: $fruit=array('apple'=>"苹果",'ba ...

  4. 「C语言」Windows+EclipseCDT下的C语言开发环境准备

    之前写过一篇 「C语言」在Windows平台搭建C语言开发环境的多种方式 ,讨论了如何在Windows下用DEV C++.EclipseCDT.VisualStudio.Sublime Test.Cl ...

  5. C#内存占用大量资源的解决办法

    昨天,独立完成了一个项目,一直运行起,起初运行内存为15Mb左右,但是发现内存以每秒2Mb的速度增加,吓了我一跳(注:我实习生,我的工作中第一个项目).从头找寻对象,再来dispose,弄得我晕头转向 ...

  6. IPC机制--Binder

    文章来自 Android技术内幕 系统卷 转:http://www.linuxidc.com/Linux/2011-08/40508.htm 什么是IPC机制以及IPC机制的种类 在Linux中,是以 ...

  7. CSS层次选择器温故-2

    1.层次选择器 通过HTML的DOM元素间的层次关系获取元素,层次关系包括后代.父子.相邻兄弟和通用兄弟,通过其中某类关系可以方便快捷地选定需要的元素 2.语法 3.兼容性 IE7以及以上版本 4.后 ...

  8. 复杂表格的树形结构的添加删除行div实现

    公司倒闭,换了工作,无奈选择了做外包这个差事,大公司进不去,小公司工资太低,可能也只能如此了.但无奈之举,亦不可浪费时间,多多磨练自己吧! 众所周知,做外包项目,其实就是做一些大公司的内部系统,多以管 ...

  9. Mysql之执行计划

    1.explain分析sql语句 例如: EXPLAIN )  ORDER BY bi.`publish_time`  返回结果: 而今天检查的不是这条sql,远比这条复杂,不过也能反映情况了. (1 ...

  10. JSP--JavaBean

    JSP 最强有力的一个方面就是能够使用 JavaBean 组件. 按照 Sun 公司的定义, JavaBean是一个可重复使用的软件组件.实际上 JavaBean 是一种 Java 类,通过封装属性和 ...