java中的接口是类吗
1259
2022-08-28
详谈Python中文件的编码格式(Python编码格式)
对于Python中的中文字符串的处理方式
一、源代码中的编码方式分析
------所有的文本文件在保存的时候,都会将文本进行编码【数据在计算机中是以二进制的方式存储】,文本的编码方式一般默认为ANSI编码方式(ANSI并不是某一种特定的字符编码,而是在不同的系统中,ANSI表示不同的编码。在英文系统中ANSI编码其实是ASCII编码;在中文系统中ANSI编码其实是GBK编码)。
二、读写文件时的编码方式分析
对编码方式有了一个初步的认识之后,下面对读写文件时的编码方式进行介绍。········文本文件都是以字节串的方式存放在硬盘中的。文本编辑器在保存文件的时候,对于非ASCII编码的字符串(如中文),会先使用文件默认的编码方式将其编码为字节串(二进制字节码)。
········程序读取文件时(读取文件是数据由硬盘---》内存;由二进制---》字符串),获取到的内容仍然为编码后的字节串【此时的编码后的字符串并不是Unicode字符串】【此时若不进行解码的话读取出来的字符串会是字符串乱码】【可以使用GBK编码方式或者UTF-8编码方式解码为Unicode字符串】。
········若想要恢复文本的内容即使其正常显示,并且对文本内容进行正常的打印,必须先将字节串解码为unicode字符串。
a = '你好' # 存储在内存中的对象(数据存储在计算机内存中)(以Unicode字符串的方式存储)print(a) # Pycharm默认设置编码格式为UTF-8--此时打印的是Unicode字符串s = a.encode('utf-8') # 将Unicode字符串编码为二进制字节码(可以理解为存储到文件中即计算机硬盘)print(s) # 此时打印的数据是a的二进制字节码print(s.decode(encoding='utf-8')) # 将二进制字节码解码为Unicode字符串(可以理解为从文件读取数据即从硬盘中读取数据到内存中)
三、关于python中的不同类型数据在计算机中的存储
python带有三种字符串对象类型--一种用于文本数据,两种用于二进制数据:①str表示Unicode文本(8位和更宽的)----》若想要存储在计算机硬盘中,需要编码为二进制字节码②bytes表示二进制数据----》可以直接存储在计算机硬盘中③bytearray表示一种可变的bytes类型----》可以直接存储在计算机硬盘中
注:str.encode():把一个字符串编码为其raw bytes形式【二进制字节码】 bytes.decode(): 把raw bytes节码为其字符串形式 str----->bytes,叫encode【编码】 bytes---->str,叫decode【解码】
常见中文编码名称:编码名称 用途utf-8 所有语言gbk 简体中文gb2312 简体中文gb18030 简体中文big5 繁体中文big5hkscs 繁体中文
详细解释:······在计算机内存中,统一使用Unicode编码【内存中数据体现为Unicode字符】,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码【保存到硬盘或者传输需要以二进制的方式】。······用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里【二进制数据解码为Unicode字符】【此时可以在记事本编辑页面看到】,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件【Unicode字符编码为二进制数据】【此时文本中的数据以二进制的方式保存到计算机中】;浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器【此时Unicode字符被解码为二进制数据】;所以你看到很多网页的源码上会有类似的信息,表示该网页正是用的UTF-8编码。
总结:
#中文一般是gbk码,window的系统一般是用gbk编码,但是用这个编码不可以和别的国家语言通用##后来出了万国码,unicode,utf-8是它的一部分,别的任何码都可以转成unicode#python3.x后都是默认用Unicode作为编码。Unicode只能用.encode('')编码成其他编码,但是不编码也可以。
去期待陌生,去拥抱惊喜。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~