python数据要输中文吗

更新时间:02-09 教程 由 挽木琴 分享

需要使用中文就输入中文,大多数情况下应该是用不着的。

首先,Python3内部str采用Unicode编码,不是UTF-8编码。Unicode是字符编码,UTF-8是字符传输编码(当然也用于文件存储),二者不是一个概念。在Unicode出现之前,字符编码和字符传输编码没有区别,比如ASCII,GBK、BIG5等等。Unicode编码不用于直接传输或存储,对应于Unicode的传输编码有UTF-8、UTF-16、UTF-32等多种格式,通常采用UTF-8编码,在Unicode编码小于256时,与ASCII编码完全一致,兼容性好,而且传输量也比UTF-16、UTF-32要小。

在Python2时代,Python的str对象是简单的字节流,默认ASCII编码,无法直接打印非ASCII字符,unicdoe对象内部采用Unicode编码,才支持非ASCII字符打印。对于非ASCII字符需要decode()指定编码转换unicode,输出时encode()转换为具体传输编码,用于显示、保存、传输。

Python3时代,str对象内部采用unicode实现,相当于Python2的unicode对象,同时用bytes对象来表示原始的字节流也就是原始的传输或者存储的字节。Python3默认的传输和存储字节流是UTF-8编码,也就是说,不指定原始字节流编码的情况下,Python3自动按照UTF-8解码原始字节流,并自动转换为Unicode字符编码用于内部处理。同样,输出时如果不指定编码,也会自动转换为UTF-8编码格式(不一定正确,再某些系统上,Python会检测运行环境的编码,自动转换为环境的默认编码)。

因此,Python3强烈建议,在传输和存储时都采用UTF-8编码,这样就无需考虑字符编码的问题。

为了与其他系统或者软件兼容,Python3同样提供了decode()、encode()函数用于Unicode与其他传输编码的转换。并且,对open()函数增加了encoding参数,用于非UTF-8编码的文件读写的支持。

所以,你要清楚的是,原始数据文件的编码格式。如果是UTF-8编码,使用Python3时无需考虑编码问题。如果是GB2312、GBK等那么就有两种方式,一是指定encoding参数打开,得到的str对象;或者以二进制,即mode参数指定'b',得到bytes对象,再decode()解码,转换为unicode对象。

声明:关于《python数据要输中文吗》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2104596.html