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. python代码风格-PEP8

    转载自http://www.douban.com/note/134971609/ Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下 ...

  2. Java中的Set集合接口实现插入对象不重复的原理

    在java的集合中,判断两个对象是否相等的规则是: 1).判断两个对象的hashCode是否相等 .      如果不相等,认为两个对象也不相等,完毕       如果相等,转入2)(这一点只是为了提 ...

  3. pygame for python3.3

    pygame的更新慢的令人发指,我最初使用的python是3.4版本的,无何奈何pygame不支持3.4,甚至官网只有3.2版本的.我于是将各种版本试了一遍,出现各种问题,同时我比较钟爱3.x版本,最 ...

  4. mysql 5.6到percona 5.6小版本升级

    假设原来是mysql 5.6.19社区版,现在要升级到percona server 5.6.30. 对于大的数据库来说,采用mysqldump方式进行迁移太花费时间了,可采用新安装加载原来数据库的方式 ...

  5. [.NET] 使用C#开发SQL Function来提供数据 - 天气预报

    [.NET] 使用C#开发SQL Function来提供数据 - 天气预报 范例下载 范例程序代码:点此下载 问题情景 开发人员在设计一些数据汇整的系统服务时,可能会选择WCF.WebAPI.Sign ...

  6. 解决客户 IE 浏览器"兼容性视图"设置带来的问题

    最近在给客户开发一个 ASP.NET web 报表时,发现客户的 IE8 浏览器上,看网页总是怪怪的. 调查后发现,客户的 IE8 浏览器,统一被设置成"对本地网络使用兼容性视图" ...

  7. 利用Jquery使用HTML5的FormData属性实现对文件的上传

    1.利用Jquery使用HTML5的FormData属性实现对文件的上传 在HTML5以前我们如果需要实现文件上传服务器等功能的时候,有时候我们不得不依赖于FLASH去实现,而在HTML5到来之后,我 ...

  8. artTemplate 介绍

    artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现. 编 ...

  9. iOS-RegexKitLite导入错误

    RegexKitLite是什么? RegexKitLite是一个非常方便的处理正则表达式的第三方类库. 本身只有一个RegexKitLite.h和RegexKitLite.m 导入RegexKitLi ...

  10. 读书笔记-Autonomous Intelligent Vehicles(一)

    Autonomous intelligent vehicles have to finish the basic procedures: perceiving and modeling environ ...