在运行这样类似的代码:#!/usr/bin/env python
s="中文"
print s
最近经常遇到这样的问题:
问题一:SyntaxError: Non-ASCII character 'xe4' in file E:codingpythonUntitled 6.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
问题二:UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 108: ordinal not in range(128)
问题三:UnicodeEncodeError: 'gb2312' codec can't encode character u'u2014' in position 72366: illegal multibyte sequence
这些都是跟字符编码有关的问题,很郁闷,中文总是弄不出来,找了很多方案,这里有些是我前几天找到的一些方案,拿出来给大家分享一下哈
字符串在Python内部的表示是unicode 编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。
在某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是由于IDE的结果输出控制台自身不能显示字符串的编码,而不是程序本身的问题。
如在UliPad中运行如下代码:
s=u"中文"
print s
会提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)。这是因为UliPad在英文WindowsXP 上的控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。
将最后一句改为:print s.encode('gb2312')
则能正确输出“中文”两个字。
若最后一句改为:print s.encode('utf8')
则输出:xe4xb8xadxe6x96x87,这是控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。
下面代码可能比较通用一些,如下:#!/usr/bin/env python
#coding=utf-8
s="中文"
if isinstance(s, unicode):
#s=u"中文"
print s.encode('gb2312')
else:
#s="中文"
print s.decode('utf-8').encode('gb2312')
#!/usr/bin/env python
#coding=utf-8
s="中文"
if isinstance(s, unicode):
#s=u"中文"
print s.encode('gb2312')
else:
#s="中文"
print s.decode('utf-8').encode('gb2312')
看看下面一段代码:#!/usr/bin/env python
#coding=utf-8
#python version:2.7.4
#system:windows xp
import httplib2
def getPageContent(url):
'''''
使用httplib2用编程的方式根据url获取网页内容
将bytes形式的内容转换成utf-8的字符串
'''
#使用ie9的user-agent,如果不设置user-agent将会得到403禁止访问
headers={'user-agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'cache-control':'no-cache'}
if url:
response,content = httplib2.Http().request(url,headers=headers)
if response.status == 200 :
return content
www.002pc.com从python判断列表里数量python中文乱码问题大总结分析来看,对python判断列表里数量python中文乱码问题大总结的结果。
import sys
reload(sys)
sys.setdefaultencoding('utf-8') #修改默认编码方式,默认为ascci
print sys.getdefaultencoding()
content = getPageContent("http://www.oschina.net/")
print content.decode('utf-8').encode('gb2312')
#!/usr/bin/env python
#coding=utf-8
#python version:2.7.4
#system:windows xp
import httplib2
def getPageContent(url):
'''
使用httplib2用编程的方式根据url获取网页内容
将bytes形式的内容转换成utf-8的字符串
'''
#使用ie9的user-agent,如果不设置user-agent将会得到403禁止访问
headers={'user-agent':'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'cache-control':'no-cache'}
if url:
response,content = httplib2.Http().request(url,headers=headers)
if response.status == 200 :
return content
import sys
reload(sys)
sys.setdefaultencoding('utf-8') #修改默认编码方式,默认为ascci
print sys.getdefaultencoding()
content = getPageContent("http://www.oschina.net/")
print content.decode('utf-8').encode('gb2312')
更多:python判断列表里数量python中文乱码问题大总结
https://www.002pc.comhttps://www.002pc.com/python/1258.html
你可能感兴趣的乱码,python,中文,总结,问题
自学mysql找工作MySQL客户端中文乱码问题
MySQL客户端中文乱码问题,有需要的朋友可以参考下。MySQL中涉及的几个字符集第二电脑网从自学mysql找工作MySQL客户端中文乱码问题分析来看,对自学mysql找工作MySQL客户端中文
易语言 mysql 引号问题MYSQL 客户端控制台 中文乱码
本以为全部设置UTF8 中文不会乱码。网页显示都OK。电脑技术002pc网从易语言 mysql 引号问题MYSQL 客户端控制台 中文乱码分析来看,对易语言 mysql 引号问题MYSQL 客户端控制
php7性能配置MySQL 中文显示乱码
最近关于中文显示乱码的贴子比较多,所以也做了个总结:可以参考一下杨涛涛版主的《各种乱码问题汇总》http://topic.csdn.net/u/20071124/08/3b7eae69-ed1d-4a77
php获取前端点击事件MySQL 中文显示乱码
最近关于中文显示乱码的贴子比较多,所以也做了个总结:可以参考一下杨涛涛版主的《各种乱码问题汇总》http://topic.csdn.net/u/20071124/08/3b7eae69-ed1d-4a77
彻底清除电脑系统垃圾怎么解决打开记事本中文乱码的问题
怎么解决打开记事本中文乱码的问题,ubuntu默认的打开.txt文件用的是gedit,可gedit默认编码是UTF8,打开windows下编辑的gb2312的文档都是乱码。
mysql无法设置gbkC++插入中文到mysql乱码
C++ 插入中文字符到mysql数据库出现乱码,奇怪的是直接在数据库写查询语句直接进行插入,是不会出现乱码然后就根据一些材料把数据库,得编码形式改为gb2312但是结果仍然乱码中(设
php $db类累加php smarty截取中文字符乱码问题?gb2312/utf-8
一般网站页面的显示都不可避免的会涉及子字符串的截取,这个时候truncate就派上用场了,但是它只适合英文用户,对与中文用户来说,使用 truncate会出现乱码,而且对于中文英文混合串
asp.net环境什么意思aspx 中文汉字显示为乱码
检查了web.config的配置是正确的: 《asp.net环境什么意思aspx 中文汉字显示为乱码》总结了关于第二电脑网教程,对于我们来电脑技术002pc网确实能学到不少知识。!-- 全球化 此
mysql router mycatDjangoz中文乱码的问题_MySQL
Django
最近在学习Django网站架构,刚学习的时候依照http://djangobook.py3k.cn/2.0/这一教材慢慢学习,到后来发现中文页面无法显示的问题在这里将解决方法写出来
奇数中文asp乱码ASP常用日期格式化函数 FormatDate()
核心代码
002pc.com认为此文章对《奇数中文asp乱码ASP常用日期格式化函数 FormatDate()》说的很在理,第二电脑网为你提供最佳的第二电脑网,asp网页制作。
0踩
赏
0 赞