python编码问题的理解与解决
错误:'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
看到网上很多都不清楚,做了一天的实验,终于搞清楚这些原理
如果有错误请指出,谢谢,希望不要一开口就喷。
总结:理解3个概念,代码编码类型,即python的源代码的编码格式,有中文必须#coding:utf-8,这句话是说pytho以utf-8去解析代码
系统编码类型,指的是控制台的输出平台的编码类型
系统默认编码类型,指的是在需要转换时的默认转换,一开始把这个与第一点混淆了。
举例:
1.
python默认的代码编码类型为ascii
代码中字符串的默认编码与代码文件本身的编码一致
s='中文' 这里的s为ascii类型
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
设置系统默认编码方式为utf-8
即没有说明的需要转换的会使用utf-8进行转换。
4 linux系统编码是utf-8,即控制台是utf-8
print 出来的东西必须和控制台的编码格式兼容。
5文件的读入
str的类型为读入的文件的类型
#coding:utf-8 声明出现的中文为utf-8。
import sys print sys.getdefaultencoding() 系统的默认编码方式认为ascii, a = '中文'
b = u'中文'
print repr(a),repr(b)
print a, b.encode('utf-8') #这里的终端是utf-8,a是str,即为utf-8,b是unicode,默认编码为所以必须转成utf-8 reload(sys)
sys.setdefaultencoding( "utf-8" )
print sys.getdefaultencoding() a = '中文'
b = u'中文'
print type(a),type(b) #这里终端已经是utf-8,a是str,即utf-8,b是unicode,系统默认编码为utf-8,所以会默认进行utf8编码,效果与主动编码一样
print repr(a),repr(b)
print a, b
python编码问题的理解与解决的更多相关文章
- 彻底解决Python编码问题
1. 基本概念 字符集(Character set) 解释:文字和符合的总称 常见字符集: Unicode字符集 ASCII字符集(Unicode子集) GB2312字符集 编码方法(Encoding ...
- (转载) 浅谈python编码处理
最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...
- Python之路3【知识点】白话Python编码和文件操作
Python文件头部模板 先说个小知识点:如何在创建文件的时候自动添加文件的头部信息! 通过:file--settings 每次都通过file--setings打开设置页面太麻烦了!可以通过:View ...
- python编码问题大终结
一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...
- python编码问题一点通
一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...
- 说说Python编码规范
前言 已有近两个月没有发表过文章了,前段时间外甥和女儿过来这边渡暑假,平常晚上和周末时间都陪着她们了,趁这个周末有空,再抽空再把这块拾起来. 这么久没写了,再次拿起键盘,想想,发表些什 ...
- Python 编码问题(十四)
一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...
- 笔记二:python编码详解
一:学习内容 python编码讲解 python编码说明 python中文乱码解决三部曲 二:python编码讲解 1. ASCII编码 美国信息交换标准代码(American Standard Co ...
- Python编码、流程控制、格式化输出
Python编码 初始编码: 电脑的传输,还有储存,实际上都是010101010 ASCII码: (American Standard Code for Information Interchange ...
随机推荐
- 写个Python练练手吧
在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍. 所以,实际开发的时候,我们总是使用一个文本编辑器来写代码,写完了,保存为一个.py文件, ...
- Android 时间轴TimeLine
代码:这里
- 安卓开发44:解决 INSTALL_FAILED_UID_CHANGED 等问题
apk无法卸载,一般可以下面的方法试一下: 1. 删除/data/app/(filename) 文件夹下的apk包 2. 删除/system/app/(filename) 文件夹下的apk包 3. 将 ...
- NDK(14)Native的char*和Java的String相互转换
转自: http://www.cnblogs.com/canphp/archive/2012/11/13/2768937.html 首先确保C/C++源文件的字符编码是UTF-8与JAVA的class ...
- Android权限安全(4)在什么时候检验权限?
Android独有的Service等 : 通过PM的CheckPermission 其中 pm 是package manager services 非Android特有的Service等 : 映射为O ...
- 函数lock_rec_get_first
/*********************************************************************//** Gets the first explicit l ...
- UVa 699 The Falling Leaves
题意:给出按先序输入的一颗二叉树,分别求出从左到右的相同横坐标上的节点的权值之和 递归建树,然后用sum数组分别统计每一个横坐标上的权值之和 感觉建树都在递归递归递归= =慢慢理解吧 #include ...
- BZOJ2299: [HAOI2011]向量
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2299 题解:乱搞就可以了... 不妨认为有用的只有(a,b)(a,-b)(b,a)(b,-a) ...
- IIS Web负载均衡的几种方式
Web负载均衡的几种实现方式 摘要:负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用 ...
- ASP.NET MVC @helper使用说明
简单的 @helper 方法应用场景 Razor中的@helper语法让您能够轻松创建可重用的方法,此方法可以在您的视图模板中封装输出功能.他们使代码能更好地重用,也使代码更具有可读性. 在我们定义@ ...