`
watershitter
  • 浏览: 43527 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python 中文编码问题

阅读更多
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 中文乱码 问题深入分析.docx

    在 Python 中,中文乱码问题一直是一个让人头疼的问题,经常抛出编码转换的异常。那么,Python 中的 str 和 unicode 到底是什么东西呢? 首先,Python 中的 unicode 指的是 unicode 对象。例如,u'/u54c8/u54c8' ...

    python 中文乱码问题深化分析.docx

    Python 中文乱码问题深化分析 在 Python 中,中文编码一直是一个极为头大的问题,经常抛出编码...Python 中的中文编码问题需要我们正确地理解 str 和 unicode 的概念,并正确地使用编码格式和解码方式来避免乱码问题。

    python解决中文乱码问题

    解决python中文乱码问题、首先发送请求,然后将请求返回的值传到coding(req)函数。

    Python中文乱码

    综上所述,Python中文乱码问题主要源于字符编码的不匹配,通过正确识别和指定编码,可以避免大部分乱码情况的发生。在处理中文字符时,养成良好的编码习惯,统一使用UTF-8编码,可以显著减少乱码问题,提升开发效率...

    python学习教程,如何解决Python中文编码乱码问….docx

    ### Python中文编码问题详解 #### 一、问题背景与概述 在进行Python编程时,我们经常会遇到中文编码的问题。特别是当我们在程序中尝试输出或处理中文字符串时,如果没有正确地设置编码方式,就会出现乱码或者是...

    python查询笔画数(含汉字编码表)

    这个主题涉及到几个关键知识点,包括Python的字符串操作、汉字编码以及如何利用数据资源来获取汉字笔画信息。 首先,我们需要理解汉字的编码。在给定的文件“汉字编码表 gbk unicode.txt”中,很可能包含的是GBK和...

    Python中文乱码详解.rar

    总的来说,Python中文乱码问题主要涉及编码和解码的选择以及统一性。了解编码原理,合理使用Python提供的工具和方法,就能有效地避免和解决乱码问题。在教育和学习过程中,掌握这些知识点对提高编程能力非常有帮助。

    20180530_Python编码及中文乱码1

    Python 编码与解码详解 编码是将可读的字符转换为计算机内部表示的过程,而解码则是相反的过程,即将计算机内部的表示转换回可读的字符。...正确处理编码问题可以避免字符乱码,提高程序的兼容性和稳定性。

    Python中文乱码详解.pdf

    总结来说,Python中文乱码问题涉及字符编码的基础知识,包括ASCII、GBK、UTF-8、MBCS、Unicode和CodePage等概念。理解和掌握这些知识点,以及Python中相应的处理方式,对于解决实际开发中的乱码问题至关重要。

    python OpenCV imshow()中文乱码问题解决方法之一

    python OpenCV imshow()中文乱码问题解决方法之一

    解决Python3用PIL的ImageFont输出中文乱码的问题

    今天在用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...

    解决c++调用python中文乱码问题

    总结来说,要解决C++调用Python时的中文乱码问题,关键在于理解两种语言之间的编码差异,并确保在数据传递过程中进行适当的编码转换。在本例中,我们通过编写GBK到UTF-8的转换函数,成功地使C++能够正确地向Python...

    Python中文乱码详解参考.pdf

    描述:本文目的为Python程序员简练地介绍字符编码相关支持,彻底解疑Python中文乱码、Python 2与Python 3字符编码差异等相关问题。 标签:无 部分内容: Python中文乱码详解 1. 字符编码的概念 字符是抽象符号...

    python避免中文乱码的代码.docx

    Python是一种广泛使用的编程语言,但在处理中文字符时可能会遇到乱码问题。这主要是因为Python的默认内部编码是ASCII,不支持中文字符。为了解决这个问题,我们需要采取一些措施确保中文字符能够正确显示。 1. **...

    chardet-1.0.1.tar.gz 自动检测python汉字编码辅助

    完成这些步骤后,`chardet` 就可以在Python项目中使用了,为处理汉字编码问题提供了强大的支持。总的来说,`chardet` 是Python处理编码问题的一个重要工具,尤其在与HTML解析相关的场景中,它极大地提高了代码的健壮...

    linux下python中文乱码解决方案详解

    总结来说,解决Linux下Python中文乱码问题的关键在于正确配置字体、清理缓存以及可能需要更新依赖工具的编码设置。通过以上步骤,大多数情况下都能成功显示中文字符,避免乱码问题。理解并掌握这些方法,对于在Linux...

Global site tag (gtag.js) - Google Analytics