Linux与Windows 解压乱码 UTF8BOM读取问题
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读取问题的更多相关文章
- Linux命令-压缩解压命令:gzip、gunzip
gzip [选项] 源文件名(压缩前) gunzip [选项] 源文件名(压缩后) cd /tmp 切换tmp目录 rm -rf * 强制删除tmp目录下面所有的文件和目录 touch beijing ...
- 【Linux命令】Linux压缩及解压命令
Linux压缩及解压命令 一.文件打包和压缩命令介绍 linux系统文件压缩格式,常用的有*.tar.gz.*.gz.*.zip.*.tar,还有*.rar..7z..bz2..tar.xz..tar ...
- Linux中如何解压iso类型文件
在Linux下如何解压iso类型的文件呢? 可以使用mount命令来处理 [root@DB-Server tmp]# ls /tmp/rhel-server-5.7-x86_64-dvd.iso /t ...
- [转]Ubuntu Linux 安装 .7z 解压和压缩文件
[转]Ubuntu Linux 安装 .7z 解压和压缩文件 http://blog.csdn.net/zqlovlg/article/details/8033456 安装方法: sudo apt-g ...
- linux压缩文件——解压方法
linux下 tar解压 gz解压 bz2等各种解压文件使用方法 .tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar ...
- Linux命令之解压
Linux命令之解压 使用tar命令解压.zip文件的时候,遇到如下异常, tar -xzvf guangwang.zip gzip: stdin has more than one entry--r ...
- Linux打包压缩解压工具
第1章 Linux 打包压缩解压工具一.压缩.解压工具 compress/uncompress gzip/gunzip bzip2/bunzip2/ bzcat xz/unxz/ xzcat ...
- linux ubuntu12.04 解压中文zip文件,解压之后乱码
在windows下压缩后的zip包,在ubuntu下解压后显示为乱码问题 1.zip文件解压之后文件名乱码: 第一步 首先安装7zip和convmv(如果之前没有安装的话) 在命令行执行安装命令如下: ...
- Linux解压乱码
.向系统添加windows下的字符编码: sudo vim /var/lib/locales/supported.d/local 添加一下编码: zh_CN.GBK GBK zh_CN.GB2312 ...
随机推荐
- sql: table,view,function, procedure created MS_Description in sql server
--添加描述 geovindu --https://msdn.microsoft.com/en-us/library/ms180047.aspx --https://msdn.microsoft.co ...
- JPHP试用笔记
JPHP试用指南 编译 环境准备 有JDK 1.6 的环境 Gradle 1.4 以上 具体配置略过,git签出https://github.com/dim-s/jphp/代码后,看readme.md ...
- jquery 全选 全不选 反选
1.概述 在项目中经常遇到列表中对复选框进行勾选操作,全选...反选.. 2. example <html> <body> <form id="test-for ...
- ASP.NET WebAPI 10 Action的选择(二)
在本系列的第二篇简要的讲述了Action的选择条件本篇深入讲述一下Action选择的过程在上一篇中我们已经讲到了Controller的激活过程中已经说到了设置Controller的Controller ...
- 【背景建模】VIBE
ViBe是一种像素级的背景建模.前景检测算法,该算法主要不同之处是背景模型的更新策略,随机选择需要替换的像素的样本,随机选择邻域像素进行更新.在无法确定像素变化的模型时,随机的更新策略,在一定程度上可 ...
- vmware mysql报kernel: EXT4-fs (dm-0): Unaligned AIO/DIO on inode 1055943 by mysqld; performance will be poor
kernel: EXT4-fs (dm-0): Unaligned AIO/DIO on inode 1055943 by mysqld; performance will be poor
- 约瑟夫问题(c++实现)
描述:约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1 开始报数.就这样,直到圈内只剩下一只猴子时,这个猴子 ...
- SVG基础图形与参数
SVG是什么 SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG 用来定义WEB上使用的矢量图 SVG 使用 XML 格式定义图形 SVG 图像在缩放时其图形质量不 ...
- basket.js 源码分析
basket.js 源码分析 一.前言 basket.js 可以用来加载js脚本并且保存到 LocalStorage 上,使我们可以更加精准地控制缓存,即使是在 http 缓存过期之后也可以使用.因此 ...
- RGui的http代理设置
办公电脑环境需要http代理访问大网,使用R语言安装包时老是无法连接网络,后来从网上发现解决方法很简单,只需在启动RGui.exe的命令行上加上启动参数就可以了. "C:\Program F ...