导航:首页 > 编程语言 > python画图无法输出汉字

python画图无法输出汉字

发布时间:2022-09-12 03:14:03

python 无法显示汉字

实际上,这段代码所出现的问题和cPickle模块没什么关系。而是Python 2显示中文“乱码”的问题。
Python 2中,str是8-bit string sequence(有点像Python 3中的bytes)。而Python 3中str就相当于Python 2中的unicode。
所以,

>>>a='上海'
>>>repr(a)
"'\xc9\xcf\xba\xa3'"
>>>a#a中存储的8字节转义字符序列
'xc9xcfxbaxa3'
>>>printa#输出a,在此过程中,会对a进行解码操作,然后输出
上海

上例中,可以看到:
a = '上海'
a中实际存储的是:
'xc9xcfxbaxa3'
这样一个字节序列。它实际上是对'上海'这个unicode字符串按gbk/cp936/gb18030编码得到的(和简体中文Windows操作系统的默认编码有关)。
给你推荐一篇博客:
http://blog.csdn.net/kiki113/article/details/4062063

下面是我写的示例:

#_*_coding:gbk_*_

#TestwithPython2.7,Python3.3onWindowsXP

try:
importcPickleasp
except:
importpickleasp

address_file='address.txt'

classHuman(object):
def__init__(self,address):
self.address=address

deftxl(self):
af={'address':self.address}
print(af)
print(af['address'])
f=open(address_file,'wb')#Inpython3,usebinarymode.
#Inpython2.7,defaultprotocolis0.
#However,itis3inpython3.3.
p.mp(af,f,0)
f.close()

address='上海'
print(address)

dq=Human(address)
dq.txl()

af=open(address_file,'rb')#
print(p.load(af))
af.close()

"""
Output
----------------------------------------
Python2.7.6:
1.#-*-coding:utf-8-*-
涓婃捣
{'address':'xe4xb8x8axe6xb5xb7'}
涓婃捣
{'address':'xe4xb8x8axe6xb5xb7'}
2.#-*-coding:gbk-*-or#_*_coding:cp936_*_
上海
{'address':'xc9xcfxbaxa3'}
上海
{'address':'xc9xcfxbaxa3'}

Python3.3.3:
上海
{'address':'上海'}
上海
{'address':'上海'}
------------------------------------------
InPython3.3.3:
>>>'上海'.encode('utf-8')
b'xe4xb8x8axe6xb5xb7'
>>>_.decode('cp936')
'涓婃捣'
"""

从这个示例中可以看出,虽然把字典整个print出来不能正常解析address中的内容:

>>>addr={'addr':'上海'}
>>>addr
{'addr':'xc9xcfxbaxa3'}
>>>printaddr
{'addr':'xc9xcfxbaxa3'}

但是单独打印:

>>>addr['addr']
'xc9xcfxbaxa3'
>>>printaddr['addr']#print输出之前隐含了编码解码操作,但为何打印整个字典时输出不正常尚待研究
上海

一切OK。
所以,如果真的用Python 2的话,对于该问题可以考虑手工负责编码、解码操作(如果使用print单独打印地址信息,就不用这么麻烦了,因为这些事它帮你做了)。用Python3,就没这么多问题了。


最后补充一点,pickle模块只是提供了一种序列化Python对象的方法。所以序列化生成的文件中和想象的不一样也不足为奇。正如自由de王国所说的,只要序列化后还能够反序列化成功就行了。实际上,当protocol不是0的情况下,序列化生成的文件是二进制格式的,根本没法用记事本直接看。

Ⅱ Python绘图时如何显示中文

Python使用matplotlib.pyplot画图,需要将部分标题等内容显示为中文,但是直接输入:
pyplot.xlabel('时间')

这时生成的图片并不会将“时间”正常显示出来,而如果我们需要显示中文,有两种方法。
方式一:示例
rcParams的属性
相关推荐:《Python视频教程》
方式二:(推荐使用)
示例:
中文字体种类

Ⅲ Python 输出中文问题,真是整疯了。。。

选择# -*- coding: utf-8-*-,因为你文件编码是utf-8的。


也可以这样,形式简单一些:

#encoding:utf-8


python中有两种类型的字符串:普通的str和unicode。一般情况下,处理中文数据推荐使用unicode类型,因为这样就不用考虑编码的问题。到了显示或输出时再转换为存储类型(utf-8、GBK)。但unicode本身是不能输出的,它只是一种内部编码。


看以下示例代码:

#unicode转str,utf-8编码
u'哈哈哈哈'.encode('utf-8','ignore')
#unicode转str,GBK编码
u'哈哈哈哈'.encode('gbk','ignore')
#str转unicode,其中str为utf-8编码
'哈哈哈哈'.decode('utf-8','ignore')

Ⅳ python打印输出汉字,有一部分出现乱码怎么解决

主要“()”不要用中文括号
冒号不要用中文冒号
引号不要用中文引号
只有要打印的输入内容可以用中文的。
以上最好检查一遍,因为我打的时候经常打错,最好删了重打,因为两种括号太难区分了。

Ⅳ 请问,python打开中文字符文件,但显示不出中文怎么办

一般是编码格式的问题,python内部默认的编码格式是utf-8,常见的文本编码格式是utf-8,gbk。编码格式不不一致就会乱码。可以在代码前面申明编码格式。

Ⅵ python 2.7输出中文字符串出现错误如何解决

由于汉字不属于ASCII编码表中的字符,因此,无论是在Python交互模式还是执行模式,很多时候都无法正常输出中文。

Ⅶ Python print无法输出中文字符

这里提示语法错误。因为你没有指定文件的编码,默认情况下不能用中文。

如果代码中有中文、中文的注释,需要在文件最上面加上这一句:


#encoding:utf-8

print'哈哈哈哈哈'


这样就OK了,望采纳!

Ⅷ 为什么Python没输出中文

本地执行可以显示中文。
代码在线工具中使用以下方法

print("\u5510\u5b9d\u6743".encode('utf-8').decode('unicode_escape'))

Ⅸ python IDLE以及控制台中无法正确显示中文

Python显示中文的问题很头大,原因在于Windows中文版的编码格式是GBK,因此直接显示中文会显示乱码的问题。
因此我们可以在开头加上#_*_encoding:<>_*_ <>可以代笔:UTF8或cp936等编码。

Ⅹ python2.7.9无法输出中文

python2.7及以下,输出字符默认为标准ASCII (0- 127,也就是 byte字符),显示乱码应该是你输出的是 utf-8 编码字符串,windows控制台默认编码是gbk(可以通过命令CHCP 65001 设置为utf-8),报错是因为你输出的是 unicode 字符(包含128-255)


新人如果对编码不是很了解,那最好的解决办法就是,封装一个unicode转byte函数,对于要输出的字符,都调用这个函数,如:

defu2b(text):
ifnotisinstance(text,unicode):
returntext
returntext.encode('utf-8')
阅读全文

与python画图无法输出汉字相关的资料

热点内容
华为交换机dhcp配置命令 浏览:314
androidbitmap缩小 浏览:270
单片机串口控制灯 浏览:83
大讯云服务器安装视频 浏览:783
华为算法领先世界 浏览:653
linux路由重启 浏览:565
php的模板编程 浏览:319
编译器原理与实现书 浏览:708
dos选择命令 浏览:16
apm固件编译到单片机 浏览:120
联通深蓝卡都包含什么app 浏览:263
如何判断网络服务器正常 浏览:649
路由器搭桥远端服务器地址是什么 浏览:515
编译动态库时会连接依赖库吗 浏览:708
淘宝手机加密是随机的吗 浏览:672
解压包子怎么装饰 浏览:585
四个数凑24算法 浏览:676
哪一种不是vi编译器的模式 浏览:169
xp在此处打开命令窗口 浏览:128
代码编译运行用什么软件 浏览:999