Python中 sys.setdefaultencoding("utf8") 的作用详解

在处理中文数据,经常加入下面的代码:

import sys
reload(sys)
sys.setdefaultencoding("utf8")

设置python默认字节流编/解码器按照utf8解码方式,把字节流编/解码为unicode;

具体来说,所起到的作用,可以用下面两个错误来解释:

  1. 在将字节流使用str()方法转换为str对象时,会调用默认的encode函数,如果没有上述系统的默认编码设置,则自动使用‘ascii‘ codecs进行编码,对于非ascii编码的数据,比如utf8字节流会产生错误解码提示:

UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-5: ordinal not in range(128)

2.在utf8编码文件中写入汉字字符, 比如 s = ‘中文‘时, 如果没有上述设置,运行程序会在初始s对象的值,报告错误编码提示:

UnicodeDecodeError: ‘ascii‘ codec can‘t decode byte 0xe4 in position 0: ordinal not in range(128)

原文地址:https://www.cnblogs.com/operaculus/p/11827889.html

时间: 2024-11-07 08:32:25

Python中 sys.setdefaultencoding("utf8") 的作用详解的相关文章

python中sys.setdefaultencoding('utf-8')的作用

在python中,编码解码其实是不同编码系统间的转换,默认情况下,转换目标是Unicode,即编码unicode→str,解码str→unicode,其中str指的是字节流,而str.decode是将字节流str按给定的解码方式解码,并转换成utf-8形式,u.encode是将unicode类按给定的编码方式转换成字节流str.注意调用encode方法的是unicode对象,生成的是字节流:调用decode方法的是str对象(字节流),生成的是unicode对象.若str对象调用encode会默

Python中__init__.py文件的作用详解

转自http://www.jb51.net/article/92863.htm http://www.jb51.net/article/86580.htm 网址包含更多关于Python相关内容感兴趣的读者可查看本站专题:<Python图片操作技巧总结>.<Python数据结构与算法教程>.<Python Socket编程技巧总结>.<Python函数使用技巧总结>.<Python字符串操作技巧汇总>.<Python入门与进阶经典教程>

【转】Python中操作mysql的pymysql模块详解

Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11.mysql版本:5.6.24 一.安装 1 pip3 install pymysql 二.使用操作 1.执行SQL 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Python中操作mysql的pymysql模块详解

Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,pymysql支持python3.x. 一.安装 pip install pymysql 二.使用操作 1.执行SQL #!/usr/bin/env pytho # -*- coding:utf-8 -*- importpymysql # 创建连接 conn =pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd

python基础教程:Python中垃圾回收和del语句详解

Python语言默认采用的垃圾收集机制是引用计数法,本文详细的介绍了Python中垃圾回收和del语句详解,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧Python中的垃圾回收算法是采用引用计数, 当一个对象的引用计数为0时, Python的垃圾回收机制就会将对象回收 https://tieba.baidu.com/p/6575202861 a = "larry"b = ahttps://www.douban.com/group/topic/16

Python中__init__和__new__的区别详解

__init__ 方法是什么? 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__ 方法通常用在初始化一个类实例的时候.例如: # -*- coding: utf-8 -*- class Person(object): """Silly Person""" def __init__(self, name, age): self.name = name self.age = age def __

(转)Python中操作mysql的pymysql模块详解

原文:https://www.cnblogs.com/wt11/p/6141225.html https://shockerli.net/post/python3-pymysql/----Python 3 进阶 -- 使用 PyMySQL 操作 MySQL 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11.mysql版本:5.6.24 一.安装 1

Python中pickle模块的使用方法详解

python的pickle模块实现了基本的数据序列和反序列化.通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储:通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象.本文和大家分享的就是python开发中pickle模块的相关使用,一起来看看吧. 基本接口: pickle.dump(obj, file, [,protocol]) 注解:将对象obj保存到文件file中去. protocol为序列化使用的协议版本,0:ASCII协议,所

python中汉诺塔的递归算法详解

请编写move(n, a, b, c)函数,它接收参数n,表示3个柱子A.B.C中第1个柱子A的盘子数量,然后打印出把所有盘子从A借助B移动到C的方法,例如: def move(n, a, b, c): pass 答案: def move(n,a,b,c): if n==1: print(a,'->',c) else: move(n-1,a,c,b) move(1,a,b,c) move(n-1,b,a,c) 理解的关键不需要管每一步是怎么解决的.重点是实现你的目的.我们可以这么理解: move