學習python處理python編碼問題

2021-06-12 12:01:15 字數 1858 閱讀 1322

一、幾種常見的

編碼格式。 

1.1、ascii,用1個位元組表示。 

1.2、utf-8,用1個至三個位元組表示,表示ascii碼時只占用1個位元組,ascii編碼是utf-8的子集。 

1.3、utf-16,用2個位元組表示,在python

中,unicode的含義就是utf-16。 

二、python原始檔的編碼與解碼,我們寫的python程式從產生到執行的過程如下:

編輯器---->源**---->直譯器---->輸出結果 

2.1、編輯器決定源**

的編碼格式(在編輯器中設定) 

2.2、也必須要直譯器知道源**的編碼格式(很遺憾很難從編碼的資料獲知原始檔的編碼格式) 

2.3、補充:在windows下當用ultraedit把源**存成utf-8時,會在檔案中記錄bom標誌(不必祥究)這樣activepython直譯器會自動識別原始檔是utf-8格式,但是如果用eclipse編輯原始檔,雖然在編輯器中指定檔案編碼為utf-8,但是因為沒有記入bom標誌,所以必須在原始檔開始處加上#coding=utf-8,用注釋來提示直譯器原始檔的編碼方式挺有意思。 

2.4、舉例:例如我們要向終端輸出"我是中國人"。 

#coding=utf-8 告訴python直譯器用的是utf-8編碼,我用的是eclipse+pydev 

print "我是中國人" #原始檔本身也要存成utf-8編碼 

三、編碼的轉換,兩種編碼的轉換要用utf-16作為中轉站。

舉例:如果有乙個文字檔案jap.txt,裡面有內容 "私は中國人です。",編碼格式是日文編碼shift_jis, 

還有乙個文字檔案chn.txt,內容是"中華人民共和國",編碼格式是中文

編碼gb2312。 

我們如何

把兩個檔案裡的內容合併到一起並儲存到utf.txt中並且不顯示亂碼呢,可以採用把兩個檔案的內容都轉成utf-8格式,因為utf-8裡包含了中文編碼和日文編碼。 

#coding=utf-8 

try: 

jap=open("e:/jap.txt","r") 

chn=open("e:/chn.txt","r") 

utf=open("e:/utf.txt","w") 

jap_text=jap.readline() 

chn_text=chn.readline() 

#先decode成utf-16,再encode成utf-8 

jap_text_utf8=jap_text.decode("shift_jis").encode("utf-8") #不轉成utf-8也可以 

chn_text_utf8=chn_text.decode("gb2312").encode("utf-8")#編碼方式大小寫都行utf-8也一樣 

utf.write(jap_text_utf8) 

utf.write(chn_text_utf8) 

except ioerror,e: 

print "open file error",e 

四、tk庫支援ascii,utf-16,utf-8 

#coding=utf-8 

from tkinter import * 

try: 

jap=open("e:/jap.txt","r") 

str1=jap.readline() 

except ioerror,e: 

print "open file error",e 

root=tk() 

label1=label(root,text=str1.decode("shift_jis")) #如果沒有decode則顯示亂碼 

label1.grid() 

root.mainloop() 

Python學習筆記 1 1 2 認識Python

一.課程目標 二.詳情解讀 1.初識pythonpython語言是一種高階程式語言,它於1991年由吉多.範羅蘇姆 guido van rossum 發明。目前主要應用於web開發 gui開發 網路爬蟲 資料科學 人工智慧等領域。python官方 python語言也是一種多正規化程式語言,即物件導向...

python學習方法 十二種學習Python的方法

python學習方法 python是地球上最流行的程式語言之一。它被世界各地的開發商和製造商所接受。大多數linux和macos計算機都預裝了python版本,現在,即使是少數windows計算機 商也正在安裝python。也許您參加聚會遲到了,您想學習但不知道該去 這12個資源將幫助您入門,並逐步...

pytho學習旅途

轉換當前格式日期 dt datetime.datetime.strptime dtstr,y m d print dt 切片獲取年份 輸入一行字元,分別統計其中英文本母,空格,數,和其他字元數 import string s ww m 23 4j 初始化個數 列印楊輝三角的前十行 triange 1...