python字符编码的一些理解

#!/usr/bin/env python
#coding:utf-8
str = ‘中国‘
print type(str)
print str

str = u‘中国‘
print type(str)
print str

str = ‘中国‘.decode(‘UTF8‘)
print type(str)
print str

  

输出:<type ‘str‘>
涓浗
<type ‘unicode‘>
中国
<type ‘unicode‘>
中国

  

  1、设置了默认编码是UTF8,#coding:utf-8,之后定义的字符串都会是utf8的格式进行编码;

2、所以讲第二行代码去掉的时候,就会报错

File "D:/Program Files/Python/TS/encoding.py", line 3
SyntaxError: Non-ASCII character ‘\xe4‘ in file D:/Program Files/Python/TS/encoding.py on line 3, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

3、若将第二行代码改为#coding:gbk的话,‘中国’.decode(‘UTF8‘)就会报错,因为默认的编码是gbk了,所以中文字符解码的时候就应该是从gbk进行解码

  4、ps:在python自带的idle中第一个输出也不会是乱码

下面简单介绍一些解码和编码:

#!/usr/bin/env python
#coding:utf-8

str = ‘中国‘.decode(‘UTF8‘)
print type(str)
print str

  unicode我的理解就是一个过渡的编码形式,decode也就是解码,都会解码成unicode形式,再经过编码转化成其他形式,所以转码前一直要知道str的编码格式。如下所示:

#!/usr/bin/env python
#coding:utf8

str = ‘中国‘.decode(‘utf8‘)
print type(str)
print str

print type(str.encode(‘gbk‘))
print str

  

<type ‘unicode‘>
中国
<type ‘str‘>
中国

  

  文件的读写

 首先,我们来了解一下中文的编码。

  1、GB2312-80字符集,中文名国家标准字符集(GB=GuóBiāo国标)。收入汉字6763个,符号715个,总计7478个字符,这是大陆普遍使用的简体字字符集。

  2、Big-5字符集(好像用的挺少吧),中文名大五码,是台湾繁体字的字符集,收入13060个繁体汉字,808个符号,总计13868个字符,普遍使用于台湾、香港等地区。

  3、GBK字符集,中文名国家标准扩展字符集(GB=GuóBiāo国标;K=Kuò扩,即扩展),兼容GB2312-80标准,包含Big-5的繁体字,但是不兼容Big-5字符集编码,收入21003个汉字,882个符号,共计21885个字符,包括了中日韩(CJK)统一汉字20902个、扩展A集(CJK Ext-A) 中的汉字52个。

  4、GB18030-2000字符集,包含GBK字符集和CJK Ext-A 全部6582个汉字,共计27533个汉字

  好像一般用到gb2312和gbk的比较多,GB18030只有遇到一些生僻的字的时候才会用的到。

  windows下的记事本默认的编码是ANSI:

  在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码;在繁体中文Windows操作系统中,ANSI编码代表Big5;在日文Windows操作系统中,ANSI 编码代表 Shift_JIS 编码。

  

  言归正传,建立一个test.txt文件,内容abc中文。

#!/usr/bin/env python
#coding:utf8
file_obj = open(‘test.txt‘)
line = file_obj.readline()
print line.decode(‘utf8‘)
print type(line)

  这样是会有错误的因为txt默认编码是gbk的,所以在对line进行解码的时候用utf8是不行的,换成gbk就没问题了。

  

  ps:python中的print直接把字符串传递给操作系统,所以你需要把str解码成与操作系统一致的格式。

  

时间: 2024-08-02 11:00:26

python字符编码的一些理解的相关文章

Python字符编码详解(转)

1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号.不过ASCII只用到了其中的一半(\x80以下),这也是MBCS得以实现的基础. 1.2. MBCS 然而计算机世界里很快就有了其他语言,单字节的ASCII已无法满足需求.后来每个语言就制定了一套自己的编码,由于单字节

Python字符编码很难吗?今天一文带你深入!从此不再疑惑!

不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 encode.decode 函数翻来覆去的转换,有时试着试着问题就解决了,有时候怎么试都没辙,只有借用 Google 大神帮忙,但似乎很少去关心问题的本质是什么,下次遇到类似的问题重蹈覆辙,那么你有没有想过一次性彻底把 Python 字符编码给搞懂呢? 完全理解字符编码 与 Python 的渊源前,我们有

更改python字符编码以便使用UTF-8的编码url路径

url编码分两种, 一种是unicode, 另一种是gb2312, 今天遇到的一个网站是要将字符编码按照gb2312来编码,用来得到一个先填写blanks后再返回页面的数据,废话少说,需要做的就是先查看你的python的编码是啥,默认是ascii, ? 1 2 3 import sys print sys.getdefaultencoding() # 'ascii' 直接附代码吧: ? 1 import urllib as com ? 1 2 3 4 5 6 7 8 9 10 11 12 13

python 字符编码处理问题总结 彻底击碎乱码!

Python中经常遇到这样的字符编码问题,尤其在处理网页源码时(特别是爬虫中): UnicodeDecodeError: 'XXX' codec can't decode bytes in position 12-15: illegal multibyte... 下面以汉字'哈'来解释作示例解释所有的问题,汉字"哈"的各种编码如下: 1  UNICODE(UTF8-16): 0xC854 2  UTF-8: 0xE59388 3  GBK: 0xB9FE 除此之外还有如gb2312,

字符集与字符编码的强化理解与操作实践

字符集与字符编码的强化理解与操作实践 踩坑 最近在工作中遇到了一个说大不大说小不小的问题,就是当我解析一个xml文件的时候,抛出了一个"Invalid byte 2 of 2-byte UTF-8 sequence"的异常,这个异常会导致解析直接退出,显然不能容忍.查阅相关资料稍微定位了一下,大概知道是字符集的问题,仔细一看,xml文件中的确有中文字符,而且当我把这些中文字符删了之后的确又能解析成功.不过我还是不能理解这当中的缘由,不过由于时间原因,当时只是把中文字符删了就草草完工.现

python 字符编码练习

通过下面的练习,加深对python字符编码的认识 # \x00 - \xff 256个字符 >>> a = range(256)>>> b = bytes(a) # 不用参数encoding >>> b b'\x00\x01\x02 ... \xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff' >>> b.decode('utf-8') # 报错 Traceback (most recent call l

python字符编码惯用法

本文总结在实际应用中遇到的python字符编码问题,制定一套编码相关的约定,避免编码上的错误. 在写猥琐宝典时需要总结soj上做过的题,准备在总结过程中顺便写一个soj上的题解.题解使用python可读,也就是python可以直接eval的格式,以便于处理.写题解老是copy soj上的题目id,title不是太方便,所以就准备自动生成一个空的题解,里面包含了我做过的题.然而直接从soj上只能拿到自己过了的题的id列表,缺乏其它信息.缺乏的信息可以抽象为soj数据库,其中包含了一个以id为主键的

第七章、Python字符编码

第七章.Python字符编码 一.定义 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的英文.汉字等字符是二进制数转换之后的结果.通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码":反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密.在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码. 字符(Character):是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英

深入理解python字符编码(包含2.x与3.x)

引子 计算机要想工作必须通电,即用'电'驱使计算机干活,也就是说'电'的特性决定了计算机的特性.电的特性即高低电平(人类从逻辑上将二进制数1对应高电平,二进制数0对应低电平),关于磁盘的磁特性也是同样的道理. 结论:计算机只认识数字,很明显我们平时在使用计算机时,用的都是人类能读懂的字符(用高级语言编程的结果也无非是在文件内写了一堆字符), 如何能让计算机读懂人类的字符?必须经过一个过程: 字符--------(翻译过程)------->二进制数字010101 这个过程实际就是一个字符如何对应特