http://blog.csdn.net/haiross/article/details/36189103 可以先看下这篇文章。。写的比较用心和详细并且高深。。我只是记流水账的。

直到今天我才注意到 shell 采用不同编码会导致这么蛋疼的问题。。这半天时间算是认栽了吧。。

首先,Windows的默认编码为GBK,Linux的默认编码为UTF-8。看图:

这个是 Linux shell 的活动代码页编码:

这个是 windows powershell 的:

936 既是 GBK。

而在 Scrapy 中抓取页面然后提取出的信息是以 unicode字符串 的形式保存下来的。在python中print即可正常显示文字。但在 powershell 中会出以下问题:

其实,在这里的问题是,scrapy使用unicode类型封装了gbk/utf-8转码后的字符串,导致无法正常解码。这里应该做的,就是去掉unicode类型,此时,codecs.unicode_escape_encode(str)则满足要求

注意,unicode类型转换为其他类型(使用a.encode("utf-8/gbk"))时,则会将该字符串在编码一边,显然不可行。

这里我强调下,unicode是字符集, utf-8 和 gbk 是编码集。至于这俩有什么不同,可以这么说:unicode 定义了所有的字符(目前看来是的),用来展示给你看的,而编码集utf-8是一种字符集的实现,用来面向计算机的,主要用来存储为字节,以及网络传输的。

附:Python 编码使用

# 定义时,使用 u 前缀表示 unicode 类型。
# 其他情况下,默认是 utf-8/gbk 等编码: powershell 下默认为gbk编码。linux终端下默认为utf-8,文件看其编码属性
# 输出时,需要什么编码, encode 成什么编码就OK了。unicoe编码不能直接输出
# 但是,在 print [u'\u6211'] 数组时,输出不会有改变。猜测原因是,输出数组时,print并不对其做处理,只是原样输出,而输出string时,会对其进行 encode

windows/linux 页面编码区别导致 python 乱码的更多相关文章

  1. php curl函数采集网页出现gzip压缩、编码不同导致的乱码 图文解决方法

    方法一: header("content-type:text/html;charset=utf-8");$url="http://115.47.116.10/rest/k ...

  2. linux 关于Apache默认编码错误 导致网站乱码的解决方案

    Apache默认编码UTF-8在解析A网站的时候没有任何问题,当运行B网站时出现的"蝌蚪文"乱码问题   最近经常有同学在使用LAMP/WAMP时,遇到这样的编码错误问题: A网站 ...

  3. windows linux 文件编码转换

    查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim中可以直接查看文件编码:set fileencoding即可显示文件编码格式.如果你只是想查看其它编码格式的文件或者想解决用Vi ...

  4. vc6.0运用mysql数据库中的编码所导致的乱码问题(接收和输出的编码必须要一致)

    [编译中遇见的问题]       ①在用vc 6.0去调用MySQL中的数据时,出现中文乱码       ②不明白mysql中的码制 [开始解决问题]      ①打开mysql控制台         ...

  5. Windows+Linux双系统所导致的时间不一致问题的原因及解决方案

    参考自:https://www.cnblogs.com/x_wukong/p/4401499.html 前几天在自己的windows10另外还装了一个Ubuntu,使用后发现windows时间一直不对 ...

  6. Asp.net core中由于页面编码导致的中文乱码

    问题描述 最近使用asp.net core写了一个简单的网站,在windows系统下完全没有出现问题.后来在linux系统中搭建了docker,并且在linux中自动使用git获取源码,编译,部署一条 ...

  7. ueditor的工具栏显示乱码解决方法 小问题.. 是你的页面编码与语言包js编码不符所导致的

    ueditor的工具栏显示乱码解决方法 小问题..  是你的页面编码与语言包js编码不符所导致的解决方法:用记事本将ueditor\..\lang\zh-cn\zh-cn.js打开,然后保存为ANSI ...

  8. 你不知道的 页面编码,浏览器选择编码,get,post各种乱码由来

    原文:你不知道的 页面编码,浏览器选择编码,get,post各种乱码由来 asp.net页面编码和浏览器的选择编码 每个asp.net的朋友都知道,在新版本的visual studio,在没有任何设置 ...

  9. shell 脚本文件Windows传到Linux后编码问题

    shell 脚本文件Windows传到Linux后编码问题 下面这个标红的位置出现,是由于脚本从Windows机器上直接传到linux文件格式不对导致的. cat -v a.sh help^M exi ...

随机推荐

  1. 🏆【Java技术专区】「编译器专题」重塑认识Java编译器的执行过程(消除数组边界检查+公共子表达式)!

    前提概要 Java的class字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令.这个过程是Java虚拟机做的,这个过程也叫编译.是更深层次的编译. 在编译原理中,把源代码翻译成机 ...

  2. 『Java』成员内部类 匿名内部类

    成员内部类 成员方法类是定义在一个类中的方法外的类,例如: public class Outer{ // 外部类 class Inner { // 内部类 // 内部类成员 } // 外部类成员 } ...

  3. SSM集成FastJson

    FastJson Json数据格式回顾 什么是json JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript( ...

  4. Apache网页优化与安全

    目录 一.Apache网页优化 1.1.概述 1.2.gzip介绍 1.3.Apache的压缩模块 二.网页压缩实验 2.1.检查是否安装mod_deflate模块 2.2.重新编译安装Apache添 ...

  5. tomcat服务监控分析及自启

    #! /bin/bash # process-monitor.sh serverName="/usr/local/apache-tomcat-7.0.72-8080" #获取进程i ...

  6. Shell-10-标准输入输出错误

    标准输入输出和错误 标准输入.输出和错误 重定向符号 示例 1 1 标准输出 2 错误输出 2 标准输出和错误输出同时定向到一个文件中 >share.txt 2>&1 3 > ...

  7. netty系列之:内置的Frame detection

    目录 简介 Frame detection DelimiterBasedFrameDecoder FixedLengthFrameDecoder LengthFieldBasedFrameDecode ...

  8. 安鸾CTF Writeup wordpress 01

    题目一: wordpress 01 URL:http://whalwl.site:8041/ wordpress 站思路就是先用wpscan 进行扫描检测一遍. wpscan 使用方法可以参考两篇文章 ...

  9. CentOS6与CentOS7的几点区别

    重新安装了一个CentOS7,顺便整理一下与自己之前用的CentOS6的区别 CentOS6以下简称c6  CentOS7以下简称c7 1.关于文件系统: c6 6.x使用EXT4,EXT4单个文件系 ...

  10. 见微知著 带你透过内存看 Slice 和 Array的异同

    hi, 大家好,我是 hhf. 有这么一个 Go 面试题:请说出 slice 和 array 的区别? 这简直就是送分题.现在思考一下,你咋样回答才能让面试官满意呢? 我这里就不贴这道题的答案了.但是 ...