python文件中文和 print 的中文的总结如下:
1 # coding=utf-8 或者 # coding=gbk 表明这个文件使用何种编码
如果出现非acs II 码,则必须制定编码
否则
s = "中文"
或
s = u"中文" 都会报错
2 print是python把 字符串丢给操作系统,再丢出之前,要求字符的编码与 文件指定的编码一致(而不必与操作系统默认编码一致, 貌似print 会根据 文件编码--》操作系统编码做自动转化)
假设 操作系统编码为gbk
# coding=gbk
s = "中文"
print s
和
# coding=utf-8
s = "中文"
print s
都没有问题
# coding=gbk
s = u"中文"
print s // 报错,因为此时 s 是unicode 编码, 而文件指定的却是gbk
print s.encode("gbk") //OK
print s.encode("utf-8") // 不报错,乱码
utf-8 与unicode是不同的
# coding=utf-8
s = u"中文"
print s // 报错,因为此时 s 是unicode 编码, 而文件指定 utf-8 同样报错
print s.encode("utf-8") //OK
print s.encode("gbk") // 报错, 其原因是print引起的, 不是encode!是因为此时的utf8的编码gbk 也能识别。 尽管操作系统是 gbk,但是最终编码错误的,无法print
3 python 中的 str 和 "%s"%var
在文件中,str,和%s 作用基本相同
str(unicode_var) 和 "%s"%unicode_var ,如果unicode_var 中包含非ascII 的字符时,都将报错。
特例:在交互平台是, 可以 "%s"%unicode_var ,其中unicode_var 包含非asc2字符,如
>>> ss = u'中文'
>>> "%s"%ss
u'\u4e2d\u6587'
str(ss)则报错
>>> str(ss)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
×××特例××××
在交互控制台时,可以直接print unicode
>>> ss = u"中文"
>>> print ss
中文
但是不能被序列化
>>> str(ss)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
str相当于文件中的print (非控制台)
str不能直接针对unicode,必须是已经编码了的 “字节码序列”
3 关于字符长度
# coding=gbk 或者
s = "中文"
su = u"中文"
print len(s) // 4
print len(s.decode('gbk')) // 2
print len(aa.decode('gbk').encode("utf-8")) //6,utf-8使用3字节表示一中文
pirnt len(su) //2
print s
//len在针对 被编码了的字符(其实字节数组),得到的字节个数,
// 针对unicode时候,可以想象是 数出了 unicode对象的个数(一个中文[|英文]一个unicode对象)
ps:最容易造成困惑的一种情况,
"%s %s "%(codec1, codec2), 其中codec1,和codec2 编码不一致, unicode,与gbk,utf-8之类的编码混杂的情况。
更详细的参考文章:http://blog.csdn.net/mayflowers/archive/2007/04/18/1568852.aspx
分享到:
相关推荐
Python 中文乱码问题深入分析,理解Python的编码转换方法
python 中文乱码 问题深入分析.docx
python 中文乱码问题深化分析.docx
解决python中文乱码问题、首先发送请求,然后将请求返回的值传到coding(req)函数。
现在有的小伙伴为了躲避中文乱码的问题甚至代码中不使用中文,注释和提示都用英文,我曾经也这样干过,但这并不是解决问题,而是逃避问题,今天我们一起彻底解决 Python 中文乱码的问题。 基础知识ASCII 很久很久...
Python中文乱码Python中文乱码Python中文乱码Python中文乱码Python中文乱码
一、python中的str和unicode 一直以来,python中的中文编码就是一个极为头大的问题,经常抛出编码转换的异常,python中的str和unicode到底是一个什么东西呢? 在python中提到unicode,一般指的是unicode对象,例如...
主要介绍了c++调用python中文乱码问题,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
今天在用python3+ImageFont输出中文时,结果显示乱码 # coding:utf-8 from PIL import Image, ImageDraw, ImageFont image= Image.new('RGB', (559, 320),(255,255,255)) draw = ImageDraw.Draw(image) # draw.text...
Python 中文编码
Python中文乱码详解[定义].pdf
·我们的Python3默认就是Unicode编码编码与解码·Python关于编码和解码对应的函数分别是encode()和decode(),对应编码和解码·pyt
使用python进行中文字符处理时总会出现乱码问题,这个例子用与说明python的编码转换过程很常见的5个问题
完美解决Python下matplotlib绘图中文乱码问题.docx
PEP8Python 编码规范 将Python 的英文编码变成中文的数据规范
将dll文件替换pyzbar文件夹中的dll文件,例如我将该libzbar-64.dll文件直接复制到E:\EngineeringSoftwares\Python3.9.1\Lib\site-packages\pyzbar文件夹中,并选择替换文件即可。
python学习教程,如何解决Python中文编码乱码问….docx
python OpenCV imshow()中文乱码问题解决方法之一