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. C语言程序设计-现代方法(笔记3)

    第十三章 字符串 1.字符串字面量(13.1) 字符串字面量:用一对双引号括起来的字符序列.字符串字面量可以像字符常量一样包含转义字序列. 在字符串字面量中小心使用八进制和十六进制的转义序列. 字符串 ...

  2. Django学习 之 Django安装与一个简单的实例认识

    一.Django简介 1.MVC与MTV模型 (1)MVC模型 Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的. ...

  3. 最新获取SkyDrive音乐外链mp3地址方法20131003

    最新获取SkyDrive音乐外链方法20131003在文章底部更新,欢迎使用! 这已经是第三次写获取SkyDrive音乐外链mp3地址方法的文章了,因为第一次.第二次都失效了.三篇文章都有个共同点,都 ...

  4. tcpdump 获取SQL

    tcpdump [-aAdDefhIJKlLnNOpqRStuUvxX] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ ...

  5. 转:NGINX 基于nginx_upstream_check_module-master 健康检测及平滑升级

    https://www.cnblogs.com/linxizhifeng/p/7075325.html linux的nginx下安装tengine的nginx_upstream_check_modul ...

  6. Address localhost:1099 is already in use(IDEA启动Tomcat报错1099 is already in use)

    IDEA中启动Tomcat报错,Error running Tomcat7.0.52: Address localhost:1099 is already in use 或者是 java.rmi.se ...

  7. MySQL部分语法

    MySQL 1.先进入到d盘根目录(自己安装MySQL的盘符) cd d:\2.输入net start mysql3.在d盘的根目录下输入mysql -u root -p就可以进入mysql的命令提示 ...

  8. Matplotlib 安装

    章节 Matplotlib 安装 Matplotlib 入门 Matplotlib 基本概念 Matplotlib 图形绘制 Matplotlib 多个图形 Matplotlib 其他类型图形 Mat ...

  9. Vue中 v-for 绑定key和不绑定key的区别

    首先,它们区别主要在于 虚拟DOM的复用,绑定key可以更好的复用,下面来详细讲一下 假如我们有一个数组 arr = [1,2,3,4],我们要在2后面插入一个值9: 如果绑定了key值,那么会是这样 ...

  10. Lua生成比较理想的随机数的方法

    lua需要生成随机数的需求也是很常见的,为了生成看起来更随机的数字,我们需要注意以下几点 我们也需要给随机数设置随机数种子:math.randomseed(xx) lua对随机数种子也是有一定要求的: ...