Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介、案例应用(python中的编码格式及常见编码问题详解)之详细攻略
目录
符串编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介
1、案例理解编码的原理
2、不同编码对比
python中的编码格式及常见编码问题详解
1、查看、设置python默认编码
2、如果默认是ascii编码,输出中文时,肯定出现编码错误
3、解决输出字符串乱码问题
符串编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介
符编码(Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。
在计算机技术发展的早期,如ASCII(1963年)和EBCDIC(1964年)这样的字符集逐渐成为标准。但这些字符集的局限很快就变得明显,于是人们开发了许多方法来扩展它们。对于支持包括东亚CJK字符家族在内的写作系统的要求能支持更大量的字符,并且需要一种系统而不是临时的方法实现这些字符的编码。
1、案例理解编码的原理
在显示器上看见的文字、图片等信息在电脑里面其实并不是我们看见的样子,即使你知道所有信息都存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片。
假设,你用显微镜把盘片放大,会看见盘片表面凹凸不平,凸起的地方被磁化,凹的地方是没有被磁化;凸起的地方代表数字1,凹的地方代表数字0。硬盘只能用0和1来表示所有文字、图片等信息。
那么字母”A”在硬盘上是如何存储的呢?可能小张计算机存储字母”A”是1100001,而小王存储字母”A”是11000010,这样双方交换信息时就会误解。比如小张把1100001发送给小王,小王并不认为1100001是字母”A”,可能认为这是字母”X”,于是小王在用记事本访问存储在硬盘上的1100001时,在屏幕上显示的就是字母”X”。
也就是说,小张和小王使用了不同的编码表。小张用的编码表是ASCII,ASCII编码表把26个字母都一一的对应到二进制1和0上;小王用的编码表可能是EBCDIC,只不过EBCDIC编码与ASCII编码中的字母和01的对应关系不同。
以上源自百度百科:字符编码_百度百科
2、不同编码对比
python中的编码格式及常见编码问题详解
Python2默认的编码是ASCII,而Python3默认的是utf-8。
(1)、Python中字符串类型分为byte string 和 unicode string两种。
(2)、Python进行同时包含 str 与 unicode 的运算时,Python 一律都把 str 转换成 unicode 再运算,当然,运算结果也都是 unicode。由于 Python 事先并不知道 str 的编码,它只能使用 sys.getdefaultencoding() 编码去 decode。
(3)、一般情况下,sys.getdefaultencoding() 的值总是 'ascii' ——显然,如果需要转换的 str 有中文,一定会出现错误。对于这个问题,建议在代码里的中文字符串前写上 u。
(4)、在 Python 3 已经取消了 str,让所有的字符串都是 unicode,这也许是个正确的决定。
1、查看、设置python默认编码
importsys
res = sys.getdefaultencoding() #sys.setdefaultencoding('utf-8')设置默认格式为utf8
print(res)
2、如果默认是ascii编码,输出中文时,肯定出现编码错误
将输出的字符串转为unicode编码,或者格式化为unicode编码,然后输出
my_str=self.lineEdit.text()
self.textBrowser.append(my_str)
print(unicode(self.lineEdit.text()))
my_str=self.lineEdit.text()
self.textBrowser.append(my_str)
print(u'%s'%self.lineEdit.text())
3、解决输出字符串乱码问题
f= open(unicode(my_file),'a+')
f.write(unicode(my_data).encode('utf8'))
Computer:字符编码(ASCII编码/GBK编码/BASE64编码/UTF-8编码)的简介 案例应用(python中的编码格式及常见编码问题详解)之详细攻略