Python無法打印中文


在python2中用的是ASCII編碼,所以在進行打印中文的時候要進行編碼和解碼。

 

在python3中用的是Unicode編碼,Unicode號稱萬國碼,可以向所有的編碼進行兼容。所以在Python3中不會出現中文打印不了的情況,除非是文件本身編碼出了問題。

 

 

---------------------------------------------------------------------------------------

Python2

 

s = "hello world"

print(s)

是可以直接進行打印的。

 

s = "中文"

print(s)

Python2會進行報出語法錯誤,總共有兩個問題:

  1.沒有對代碼的編碼進行注解:

    在文件的頭部加入

    #-*- coding:utf-8 -*-或者 #coding:utf-8

  2.對文件進行編碼解碼:  

    Python編碼之間Unicode作為中間的過度。所以編碼能夠進行通用:

    #-*- coding:utf-8 -*-

    s = "中文"

    print(s.decode("utf-8").encode("gbk"))

 

編碼解碼整個過程,就好像是Unicode是一個翻譯官一樣:例如jbk和gbk之間的一個過程:

jbk無法直接轉換到gbk,所以需要有一個過程, jbk  decode生成Unicode utf-8然后在進行encode生成gbk

 

 

----------------------------------------------------------------------------------------------------------

Python3

 

#encode 在編碼的同時,會把數據轉換成byte類型

  import sys
  print(sys.getfilesystemencoding())
  s = "中文"             #py3 默認就是utf8 unicode向下兼容utf-8
  s_to_gpk = s.encode("gbk")
  print(s_to_gpk.decode("gbk"))    #py3是不需要轉換的,但是要轉的話還要轉回去

 

 

 

----------------------------------------------------------------------------------------------------------

補充:

'''
-----二進制:(0 and 1)
-------->>ASCII :只能存放英文河拉丁字符。一個字符占一個字節,8位
--------------->>gb2312:只能6700多個中文,1980年
--------------------->>gpk1.0:存了2萬多個字符,1995
--------------------------->>gb18030:2000,27000中文(在中國軟件發布的時候必須用gb18030)

---------->>unicode: utf-32:一個字符占四個字節
---------->>unicode: utf-16>一個字符占兩個字節或兩個以上,65535(實在找不到的時候在utf-32里面找)
---------->>unicode: utf-8:一個英文用ASCII碼來存,一個中文占3個字節,utf=8表示是根據表示什么來決定大小的。

---------->>GBK GB2312 表示中文得時候用得是兩個字節。
'''

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM