可以的呀,记得在py文件的头上加上#coding=utf-8
使用中文字符串的时候字符串用unicode对象,即u’中文字符串‘
⑵ python无法匹配中文,源文件为gb2312
re.match只能匹配“4月”出现在字符串头部的情况,也就是每行头部的情况。
4月出现在中间是匹配不到的。
⑶ 为什么python脚本中使用中文会报错 解决方法已知.. 只想知道详细的原因
开头添上针对不同平台的中文编码。
一般linux下用
# -*- coding: utf-8 -*-
windows下gbk
# -*- coding: gbk -*-
⑷ 在pycharm学python 怎么识别汉子
PyCharm配置
PyCharm默认Python脚本编码是UTF-8,我们将其设置为GBK:
进入file>setting,在输入框搜索encoding
保存设置并重启PyCharm,这样默认编码就生效了,可在右下角查看
END
Python 2
笔者使用的Python版本是2.7.11。Python 2 的中文支持需要做两件事:
①在代码前端增加代码:# -*-coding:gbk-*-
②在中文前加u前缀,如:u"你好"
运行代码,检查是否已成功支持中文字符
END
Python 3
笔者使用的Python版本是3.5.1。Python 3 的中文支持只需要做一件事即可:
①在代码前端增加代码:# -*-coding:gbk-*-
⑸ 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 保存对话框无法识别中文
参考这几点
代码前面加上 #coding:utf-8
代码中设计到中文的时候 使用 u开头定义为unicode字符串,如 s=u'网络'
使用encode,decode方法进行编码转换
s.encode('utf-8')unicode转换为utf-8编码str
s.decode('gbk') gbk编码str转换为unicode
⑺ 请问,python打开中文字符文件,但显示不出中文怎么办
一般是编码格式的问题,python内部默认的编码格式是utf-8,常见的文本编码格式是utf-8,gbk。编码格式不不一致就会乱码。可以在代码前面申明编码格式。
⑻ python2中为什么交互界面可以识别中文,而文件无法识别
Python中的字符串的大概分为为str和Unicode两种形式,其中str常用的编码类型为utf-8,gb2312,gbk等等,Python使用Unicode作为编码的基础类型。str记录的是字节数组,只是某种编码的存储格式,终于输出到文件或是打印出来是什么格式,完全取决于其解码的编码将他解码成什么样子;Unicode是一种类似于符号集的抽象编码,它只规定了符号的二进制代码,却没有规定这个二进制代码该如何存储,也就是它只是一种内部表示,不能直接保存,所以存储时需要规定一种存储形式,比如utf-8等。
Python中有编码转换的函数有:
decode(char_set) 实现char_set解码成Unicodeencode(char_set) 实现Unicode编码成char_set
查看Python文档会发现:
open(filename, 'w')这个方法中,filename这个参数必须是Unicode编码的参数。
我之前加上#-*-coding:utf-8-*-将编码设置为utf-8,当调用这个方法往里传参数时,需要将这个变量filename解码成Unicode。
比如filename='中文.txt',使用open()时,这样写open(filename.decode('utf-8'), 'w'),这样创建的中文文件名就没有乱码问题了。
⑼ python3不能使用中文怎么办
Python3对中文的支持非常全面。在Python中,源文件默认使用的是UTF-8编码,这样一来,不单可方便地在源代码的字符串中使用中
文,而且变量名也可以使用中文。
2、在Python3中不需要来回的编码和解码,直接使用print函数即可输出变量的内容
3、在Python3中,字符串对象没有decode和encode方法。
推荐学习《python教程》。
⑽ Python中加了# -*- coding: utf-8 -*-,还是不能显示中文
应该是windows系统识别编码的问题。
将脚本文件的编码 设置成 ANSI看看。
看你的显示应该是learn python for hard way这本书呗,这书上都是py2的,你下一个py3版本,这种问题一般就不会出现了。