# coding:utf-8与sys.setdefaultencoding()的区别

1,# coding:utf-8
设置文件内容的编码
2,sys.setdefaultencoding()
设置python解析器默认的编码

首先python编解码的过程是:

str.decode(‘str的编码‘) --> unicode
unicode.encode(‘想要的编码‘) --> 想要的编码

换句话说就是:unicode就是中间态编码,只用先将str字符串decode成unicode之后,才能将其encode成其他编码格式

例子: 

# coding:utf-8
  s = ‘中文字符‘  # s是str类型的,而不是unicode类型的
  s.encode(‘utf-8‘) # 这里对s直接encode,其实系统默认在中间做了一步转换,就是先对s进行decode,然后在进行encode。因为decode是系统自己默认进行的,所以使用的是系统默认的编码格式进行decode的,这里的系统默认编码就是可以通过sys.setdefaultencoding()设置的。
时间: 2024-09-30 14:18:22

# coding:utf-8与sys.setdefaultencoding()的区别的相关文章

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会默

python3 中的reload(sys)和sys.setdefaultencoding('utf-8')

通常我们为了防止出现乱码会进行一下操作 import sys reload(sys) sys.setdefaultencoding('utf-8') 但这是python2的写法,但是在python3中这个需要已经不存在了,这么做也不会什么实际意义. 如果你要这么做就会出现一下错误 sys.setdefaultencoding('utf-8') AttributeError: module 'sys' has no attribute 'setdefaultencoding' 在Python2.x

Python sys.setdefaultencoding('utf-8') 后就没输出

为了解决Python的 UnicodeDecodeError: 'ascii' codec can't decode byte ,我们可以加入以下代码. import sys reload(sys) sys.setdefaultencoding('utf-8') 但是在编辑的时候发现,普通的输出却不见了,如图 print 1都没反应. 查资料后解决,原来reload(sys)的时候,sys.stdout 这个参数被重置为了ipython 的对象,导致无法输出.因此可以用以下代码代替 import

[翻译]为什么sys.setdefaultencoding()会破坏代码

注:本文2016-12-28发布于个人搭建博客,现在将内容迁移过来,会有些许表述改动,未经同意,请勿转载. 原文Why sys.setdefaultencoding() will break code 我知道更聪明.更有经验的Python程序员之前已经向python-dev提了相关问题,但每次当我需要向别人引用其中一个时,我发现很难找得到.今天当我在Google上搜索这个问题时,发现最相关的条目是我自己在2011年发给yum-devel的一个帖子.我知道以后我肯定有必要向别人证明不应该使用set

python之os和sys模块的区别

一.os模块 os模块是Python标准库中提供的与操作系统交互的模块,提供了访问操作系统底层的接口,里面有很多操作系统的函数 1.os常用方法 import os # print(os.getcwd())#获取当前目录 print(os.chdir(r"D:\program\python\code\LYH_python\Day5"))#切换进入到哪个目录下 os.rename('users.xls','pass.xls')#os.rename(old,new)将old文件重命名为ne

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

在处理中文数据,经常加入下面的代码: import sys reload(sys) sys.setdefaultencoding("utf8") 设置python默认字节流编/解码器按照utf8解码方式,把字节流编/解码为unicode: 具体来说,所起到的作用,可以用下面两个错误来解释: 在将字节流使用str()方法转换为str对象时,会调用默认的encode函数,如果没有上述系统的默认编码设置,则自动使用'ascii' codecs进行编码,对于非ascii编码的数据,比如utf8

python 中sys.stdout.write 和 print >> sys.stdout的区别

print >> sys.stdout的形式就是print的一种默认输出格式,等于print "%VALUE%" 看下面的代码的英文注释,是print的默认帮助信息 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # coding=utf-8 import sys, os list1Display = ['1', '2', '3'] list2Display = ['abc', 'def', 'rfs'] while list2Displ

python中os与sys作用与区别

OS模块 在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块,所以今天整理下比较常用的几个方法.网上这方面资料也很多,每次整理,只是对自己所学的知识进行梳理,从而加深对某个模块的使用. #OS模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result

Python中os与sys模块的区别

os与sys模块的官方解释如下: os: This module provides a portable way of using operating system dependent functionality. 这个模块提供了一种方便的使用操作系统函数的方法. sys: This module provides access to some variables used or maintained by the interpreter and to functions that intera