电信电信大王卡套餐微信qq免流量吗可以用微信qq吗

文件格式、处理格式、控制台输出格式,三个任何一个不一致都会乱码;
如果print的是u串,python会自动转换成跟控制台格式一致;
其实问题首先要弄清楚s='中文' & 之后s的编码格式。
#coding:utf-8
此时s为:'\xe4\xb8\xad\xe6\x96\x87'(utf8编码)
#coding:gbk
此时s为:'\xd6\xd0\xce\xc4'(gbk编码)
#coding:gbk
import sys
reload(sys)
sys.setdefaultencoding('utf8')
此时s为:'\xd6\xd0\xce\xc4'
#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('gbk')
此时s为:'\xe4\xb8\xad\xe6\x96\x87'
综上,s='中文'保存的编码格式由#coding即文件的保存格式确定。
py文件默认是ASCII编码,可以由sys.getdefaultencoding()获得。
使用print输出时,python会做一个ASCII到系统默认编码的转换。
于中文系统来说,默认的是gbk,隐式转换时,是从代码文件编码格式转换成gbk,默认是ASCII-&GBK。
如果字符串编码不是ASCII,则
隐式转换会出错,需要显式转换,你#coding gbk之后不乱码,是因为gbk是win系统默认格式,print时候省略了转换过程,如果你将
#coding:utf-8
import sysimport chardetreload(sys)sys.setdefaultencoding('gbk')
s='中文'print sprint chardet.detect(s)['encoding']
放在非中文系统中打印,应该是乱码。
我的测试方法是打印
#coding:shift_jis
import sys
print sys.getdefaultencoding()
reload(sys)
sys.setdefaultencoding('shift_jis')
print sys.getdefaultencoding()
s='その他'
结果为乱码。
我对python不熟悉,idle的调试功能今天也是第一次用,只能猜测到这么多。
有高人的话请指教。
如果你只是使用需要,print前手动decode。如果是理解需要,看完还不明白自己再调试一下吧。
阅读(...) 评论() &为什么在sys.setdefaultencoding之前要写reload(sys)
我的图书馆
为什么在sys.setdefaultencoding之前要写reload(sys)
摘抄来自:/how-to-use-utf-8-with-pythonpython 中获得系统默认编码为:import sys
print sys.getdefaultencoding()而修改系统默认编码应写为:import sys
reload(sys)
sys.setdefaultencoding('UTF-8')为什么需要一个看似多余的reload(sys)呢?先看下python的模块加载过程:# python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# /usr/local/lib/python2.6/site.pyc matches /usr/local/lib/python2.6/site.py
import site # precompiled from /usr/local/lib/python2.6/site.pyc
....Python运行的时候首先加载了site.py,在site.py文件里有这么一段代码:if hasattr(sys, "setdefaultencoding"):
del sys.setdefaultencoding
在sys加载后,setdefaultencoding方法被删除了,所以我们要通过重新导入sys来设置系统编码.
TA的最新馆藏问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
# coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
1.如果你在python中进行编码和解码的时候,不指定编码方式,那么python就会使用defaultencoding。
而python2.x的的defaultencoding是ascii,这也就是大多数python编码报错:“UnicodeDecodeError: 'ascii' codec can't decode byte ......”的原因。
2.关于头部的# coding:utf-8,有以下几个作用
2.1如果代码中有中文注释,就需要此声明
2.2比较高级的编辑器(比如我的emacs),会根据头部声明,将此作为代码文件的格式。
2.3程序会通过头部声明,解码初始化 u"人生苦短",这样的unicode对象,(所以头部声明和代码的存储格式要一致)
我写过一篇关于python 编码的博客:
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这两个作用不一样,
1. # coding:utf-8
作用是定义源代码的编码. 如果没有定义, 此源码中是不可以包含中文字符串的.
PEP 0263 -- Defining Python Source Code Encodings
2. sys.getdefaultencoding()
是设置默认的string的编码格式
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
python2.7以后不用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()设置的。
该答案已被忽略,原因:
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App17:56 提问
python 无法使用setdefaultencoding方法
import requests
import sys
reload(sys)
sys.setdefaultencoding("gb18030")
type = sys.getfilesystemencoding()
html = requests.get(')
print html.text
执行报错:
Traceback (most recent call last):
File "C:/Users/sh/PycharmProjects/untitled/regao_yuandaima.py", line 21, in
print html.text
UnicodeEncodeError: 'gbk' codec can't encode character u'\xe7' in position 252: illegal multibyte sequence
百度了下,只要import sys 和reload(sys)执行了,都是能获取setdefaultencoding方法的,但是我这边就不行,求大神指教!
按赞数排序
你的默认encoding已经被设置为gb18030,但是requests用的是unicode,所以要从gb18030转成unicode。由于你获得的网页本身就是utf-8,所以以gbk来解码这个网页内容就出错了。所以出现了这个UnicodeEncodeError。如果你不设置setdefaultencoding()就没问题。
你应该用默认的UTF8等编码,获取requests的请求,根据返回内容,你再对应的转换为gb18030编码等来做,而不是设置整个编码格式
其他相似问题}

我要回帖

更多关于 电信大王卡套餐微信qq免流量吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信