错误:'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类型

#coding:utf-8
必须得有这句才能识别出中文。无论是str还是unicode都得出现这句。
str默认是utf-8编码类型
s='中文' 这里的s为utf8类型
2
如果字符串是这样定义:s=u'中文'
 则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可
 
3
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编码问题的理解与解决的更多相关文章

  1. 彻底解决Python编码问题

    1. 基本概念 字符集(Character set) 解释:文字和符合的总称 常见字符集: Unicode字符集 ASCII字符集(Unicode子集) GB2312字符集 编码方法(Encoding ...

  2. (转载) 浅谈python编码处理

    最近业务中需要用 Python 写一些脚本.尽管脚本的交互只是命令行 + 日志输出,但是为了让界面友好些,我还是决定用中文输出日志信息. 很快,我就遇到了异常: UnicodeEncodeError: ...

  3. Python之路3【知识点】白话Python编码和文件操作

    Python文件头部模板 先说个小知识点:如何在创建文件的时候自动添加文件的头部信息! 通过:file--settings 每次都通过file--setings打开设置页面太麻烦了!可以通过:View ...

  4. python编码问题大终结

    一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...

  5. python编码问题一点通

    一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...

  6. 说说Python编码规范

    前言 已有近两个月没有发表过文章了,前段时间外甥和女儿过来这边渡暑假,平常晚上和周末时间都陪着她们了,趁这个周末有空,再抽空再把这块拾起来.         这么久没写了,再次拿起键盘,想想,发表些什 ...

  7. Python 编码问题(十四)

    一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...

  8. 笔记二:python编码详解

    一:学习内容 python编码讲解 python编码说明 python中文乱码解决三部曲 二:python编码讲解 1. ASCII编码 美国信息交换标准代码(American Standard Co ...

  9. Python编码、流程控制、格式化输出

    Python编码 初始编码: 电脑的传输,还有储存,实际上都是010101010 ASCII码: (American Standard Code for Information Interchange ...

随机推荐

  1. 写个Python练练手吧

    在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍. 所以,实际开发的时候,我们总是使用一个文本编辑器来写代码,写完了,保存为一个.py文件, ...

  2. Android 时间轴TimeLine

    代码:这里

  3. 安卓开发44:解决 INSTALL_FAILED_UID_CHANGED 等问题

    apk无法卸载,一般可以下面的方法试一下: 1. 删除/data/app/(filename) 文件夹下的apk包 2. 删除/system/app/(filename) 文件夹下的apk包 3. 将 ...

  4. NDK(14)Native的char*和Java的String相互转换

    转自: http://www.cnblogs.com/canphp/archive/2012/11/13/2768937.html 首先确保C/C++源文件的字符编码是UTF-8与JAVA的class ...

  5. Android权限安全(4)在什么时候检验权限?

    Android独有的Service等 : 通过PM的CheckPermission 其中 pm 是package manager services 非Android特有的Service等 : 映射为O ...

  6. 函数lock_rec_get_first

    /*********************************************************************//** Gets the first explicit l ...

  7. UVa 699 The Falling Leaves

    题意:给出按先序输入的一颗二叉树,分别求出从左到右的相同横坐标上的节点的权值之和 递归建树,然后用sum数组分别统计每一个横坐标上的权值之和 感觉建树都在递归递归递归= =慢慢理解吧 #include ...

  8. BZOJ2299: [HAOI2011]向量

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2299 题解:乱搞就可以了... 不妨认为有用的只有(a,b)(a,-b)(b,a)(b,-a) ...

  9. IIS Web负载均衡的几种方式

    Web负载均衡的几种实现方式 摘要:负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用 ...

  10. ASP.NET MVC @helper使用说明

    简单的 @helper 方法应用场景 Razor中的@helper语法让您能够轻松创建可重用的方法,此方法可以在您的视图模板中封装输出功能.他们使代码能更好地重用,也使代码更具有可读性. 在我们定义@ ...