错误:'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. HDU 4604 deque 最长上升子序列

    枚举每个位置,求以num[i]为起点的最长不下降子序列和以num[i]为结尾的最长不递增子序列. 并且把相同值的个数统计一下,最后要减去算重复了的. 比如: 1 9 4 4 2 2 2 3 3 3 7 ...

  2. btr_cur_t;

    /** B-tree cursor */ typedef struct btr_cur_struct btr_cur_t; /** The tree cursor: the definition ap ...

  3. class ha_innobase: public handler

    /** The class defining a handle to an Innodb table */ class ha_innobase: public handler { row_prebui ...

  4. UVa 1635 (唯一分解定理) Irrelevant Elements

    经过紫书的分析,已经将问题转化为求组合数C(n-1, 0)~C(n-1, n-1)中能够被m整除的个数,并输出编号(这n个数的编号从1开始) 首先将m分解质因数,然后记录下每个质因子对应的指数. 由组 ...

  5. SQL Server索引怎么用

    什么是索引 拿汉语字典的目录页(索引)打比方:正如汉语字典中的汉字按页存放一样,SQL Server中的数据记录也是按页存放的,每页容量一般为4K .为了加快查找的速度,汉语字(词)典一般都有按拼音. ...

  6. js 时间转成时间戳对比;My97DatePicker日历控件时间格式;Date.parse Firefox火狐浏览器返回Nan的解决办法

    有个情况,我在显示时间的时候是需要显示为  2013年8月15日 14时28分15秒 但是假如我用js去获取到这个时间,并且想进行时间对比的时候,这个时间2013年8月15日 14时28分15秒根本就 ...

  7. Java Web编程的主要组件技术——Struts的高级功能

    参考书籍:<J2EE开源编程精要15讲> Struts对国际化的支持 "国际化"(I18N)指一个应用程序在运行时能根据客户端请求所来的国家/地区.语言的不同显示不同的 ...

  8. 【C#学习笔记】打开新进程

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. 零基础编程指南(By Turtle)

    [零.基础] 1.看文章:<程序猿搜索的技巧>(未完成) [一.入门] 学习语言:VB 安装:下载VB6即可 教程:<李天生vb从入门到精通>http://www.xin372 ...

  10. XAMPP for Linux

     XAMPP 的 Linux 版图片集锦 安装过程仅 4 个步骤  步骤 1:下载 XAMPP PHP 5.4 XAMPP PHP 5.5  步骤 2:安装  步骤 3:开始运行  步骤 4:测试 使 ...