Windows下的控制台中,应该是这样的逻辑:

1、如果是Unicode字符串的话,首先根据控制台编码进行转换

2、之后进行输出

所以在Windows控制台下,假设str = u'中文',

1、直接print str是可以正确输出的

2、print str.encode('gbk')或者print str.encode('gb2312')是正确输出的

3、print str.encode('utf-8')是输出乱码

在Windows系统下的Sublime Text中,假设str = u‘中文',

1、如果直接print str的时候,会提示

'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

这是因为它试图用系统默认编码(Windows下默认是ascii)去对Unicode字符串进行encode,碰到中文肯定是失败的

2、如果print str.encode('utf-8')是可以在Sublime Text中正确输出的

3、如果pirnt str.encode('gbk')或者print str.encode('gb2312'),会提示

[Decode error - output not utf-8]

可能是因为Sublime Text只接受utf-8的输出吧

总结上述流程,Sublime Text的流程应该是

1、判断字符串是否是Unicode

2、如果是的话,就先对其用系统默认编码来进行encode

3、判断字节串是否是utf-8编码,如果是的话,就输出

为了解决Windows下Sublime Text这个问题,可以通过以下两种办法:

1、将以下代码加到程序的头部

import sys
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)

网上有说插入到sublime_plugin.py中,但是试验了一下,不行

2、在系统环境变量中添加PYTHONIOENCODING(大小写无所谓),值为utf-8

这样子,当想输出中文的时候,直接print str,str是Unicode字符串,这样子无论是在Sublime Text还是控制台中都是正确的结果了!

注:

chardet可以用来检测文件编码,还有codecs模块用来做编码相关的一些工作,以下这篇文章可以作为文件编码相关问题的参考

Python字符编码问题,chardet,codecs

参考文章:

PYTHON-进阶-编码处理小结

Sublime和Python中文编码的一些问题的更多相关文章

  1. [Python] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题

    最近研究搜索引擎.知识图谱和Python爬虫比较多,中文乱码问题再次浮现于眼前.虽然市面上讲述中文编码问题的文章数不胜数,同时以前我也讲述过PHP处理数据库服务器中文乱码问题,但是此处还是准备简单做下 ...

  2. python中文编码问题深入分析(一):字符编码基础

    背景:笔者作为一名刚接触python语言的新手,在实际的项目中,遇到过一些中文编码问题,初次遇到这些问题的时候,刚开始显得有些手足无措,也不知从何查起.常言道:有问题,找度娘!当我打开www.baid ...

  3. python - 中文编码/ASCII

    Python 中文编码 为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5.    GB2312(1980年)一共收录了7445个字符,包括6763个汉子和682个其他符号. ...

  4. sublime将python的运行结果在命令行显示

    sublime将python的运行结果在命令行显示 为什么这么折腾? 因为每次查看输出结果都要上下拖动窗口,很烦. 将build system修改为 { "cmd": [" ...

  5. 使用sublime编写python、php代码前的一些配置

    1.使用sublime编写python代码 打开sublime软件,Tools —> Build System —> New Build System,得到后缀名为“sublime-bui ...

  6. 转:解决Python中文编码问题

    Python 文本挖掘:解决Python中文编码问题 转于:http://rzcoding.blog.163.com/blog/static/2222810172013101785738166/   ...

  7. sublime配置python运行环境

    1.sublime下载与插件管理 1.1 下载 官网地址:https://www.sublimetext.com/3 1.2 安装Package Control管理插件 使用ctrl + ` (感叹后 ...

  8. 如何在Windows系统上基于Sublime搭建Python的编译环境

    刚刚接触到Python,直接在计算机上编译时不能正确的运行,所以将一些有关编译环境调试的知识总结了一下. 环境搭建: Python在 windows系统上编译的时候可能会出现一些编译无法运行的情况,我 ...

  9. sublime配置python环境及快捷键

    sublime配置python环境 参考链接:https://blog.csdn.net/VertigozZ/article/details/54574006 快捷键的配置:https://www.c ...

随机推荐

  1. 刷题56. Merge Intervals

    一.题目说明 题目是56. Merge Intervals,给定一列区间的集合,归并重叠区域. 二.我的做法 这个题目不难,先对intervals排序,然后取下一个集合,如果cur[0]>res ...

  2. php接口安全设计浅谈

    接口的安全性主要围绕Token.Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用,下面具体来看: (1)Token授权机制:(Token是客户端访问服务端的凭证)--用 ...

  3. 1.requests+正则表达式爬猫眼电影TOP100

    import requests from requests.exceptions import RequestException def get_one_page(url):try: response ...

  4. Hive的存储和MapReduce处理——数据清洗(Part3)

    日期:2019.11.17 博客期:118 星期日 这几天在写程序的时候虚拟机崩了,无语~所以重新从最初的状态开始配环境,重新整理之前的所有代码程序.

  5. XPath 和 CSS

    1.XPath XPath 即 XML 路径语言 (XML Path Language),他是一种用来确定 xml 文档中某部分位置的语言. xml文档(html 属于 xml)是由一系列节点构成的树 ...

  6. status 后面的P和I是什么单词的缩写

    我不是很肯定,有大概印象:P 为 performed, 已完成I 为 incomplete 未完成

  7. Day2-J-逃离迷宫-HDU-1728

    给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位 ...

  8. C语言表结构(1)

    1.顺序表初始化实战: #include<stdio.h> #include<stdlib.h> #define OK 1 #define OVERFLOW 0 #define ...

  9. 树莓派开启VNC远程桌面

    分类: Raspberry Pi Linux2013-03-12 10:18 4288人阅读 评论(1) 收藏 举报   目录(?)[+]   1.安装VNC sudo apt-get install ...

  10. GNS3 模拟icmp重定向

    网关实质上是一个网络通向其他网络的IP地址.比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0:网络B的IP地址 ...