亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

簡單解決Python文件中文編碼問題

2020-01-04 17:55:38
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了簡單解決Python文件中文編碼問題的相關資料,需要的朋友可以參考下

讀寫中文

需要讀取utf-8編碼的中文文件,先利用sublime text軟件將它改成無DOM的編碼,然后用以下代碼:

 

  1. with codecs.open(note_path, 'r+','utf-8') as f: 
  2. line=f.readline() 
  3. print line 

這樣就可以正確地讀出文件里面的中文字符了。

同樣的,如果要在創建的文件中寫入中文,最好也和上面差不多:

 

 
  1. with codecs.open(st,'a+','utf-8') as book_note: 
  2. book_note.write(st) 

創建中文文件

然后以讀出的字符為文件名,創建文件。

如果直接用上面讀出來的字符串創建文件,則會出現:

 

 
  1. st=digest_path+"//"+onenote[0]+".txt" 
  2. print st 
  3. with open(st,'a+') as book_note: 

簡單解決Python文件中文編碼問題

經過調試,應該是最后一個換行符的問題,在生成名字的時候,將字符trip一下,就能夠得到文件:

 

 
  1. st=digest_path+"//"+onenote[0].strip()+".txt" 

中文編碼問題是用中文的程序員經常頭大的問題,在python下也是如此,那么應該怎么理解和解決python的編碼問題呢?

我們要知道python內部使用的是unicode編碼,而外部卻要面對千奇百怪的各種編碼,比如作為中國程序經常要面對的gbk,gb2312,utf8等,那這些編碼是怎么轉換成內部的unicode呢?

首先我們先看一下源代碼文件中使用字符串的情況。源代碼文件作為文本文件就必然是以某種編碼形式存儲代碼的,python默認會認為源代碼文件是asci編碼,比如說代碼中有一個變量賦值:

 

 
  1. s1='a' 
  2. print s1 

python認為這個'a'就是一個asci編碼的字符。在僅僅使用英文字符的情況下一切正常,但是如果用了中文,比如:

 

 
  1. s1='哈' 
  2. print s1 

這個代碼文件被執行時就會出錯,就是編碼出了問題。python默認將代碼文件內容當作asci編碼處理,但asci編碼中不存在中文,因此拋出異常。

解決問題之道就是要讓python知道文件中使用的是什么編碼形式,對于中文,可以用的常見編碼有utf-8,gbk和gb2312等。只需在代碼文件的最前端添加如下:

 

 
  1. # -*- coding: utf-8 -*- 

這就是告知python我這個文件里的文本是用utf-8編碼的,這樣,python就會依照utf-8的編碼形式解讀其中的字符,然后轉換成unicode編碼內部處理使用。

不過,如果你在Windows控制臺下運行此代碼的話,雖然程序是執行了,但屏幕上打印出的卻不是哈字。這是由于python編碼與控制臺編碼的不一致造成的。Windows下控制臺中的編碼使用的

是gbk,而在代碼中使用的utf-8,python按照utf-8編碼打印到gbk編碼的控制臺下自然就會不一致而不能打印出正確的漢字。

解決辦法一個是將源代碼的編碼也改成gbk,也就是代碼第一行改成:

 

 
  1. # -*- coding: gbk -*- 

另一種方法是保持源碼文件的utf-8不變,而是在'哈'前面加個u字,也就是:

 

 
  1. s1=u'哈' 
  2. print s1 

這樣就可以正確打印出'哈'字了。

這里的這個u表示將后面跟的字符串以unicode格式存儲。python會根據代碼第一行標稱的utf-8編碼識別代碼中的漢字'哈',然后轉換成unicode對象。如果我們用type查看一下'哈'的數據類型type(‘哈'),會得到,也就是在字符前面加u就表明這是一個unicode對象,這個字會以unicode格式存在于內存中,而如果不加u,表明這僅僅是一個使用某種編碼的字符串,編碼格式取決于python對源碼文件編碼的識別,這里就是utf-8。

Python在向控制臺輸出unicode對象的時候會自動根據輸出環境的編碼進行轉換,但如果輸出的不是unicode對象而是普通字符串,則會直接按照字符串的編碼輸出字符串,從而出現上面的現象。

使用unicode對象的話,除了這樣使用u標記,還可以使用unicode類以及字符串的encode和decode方法。

unicode類的構造函數接受一個字符串參數和一個編碼參數,將字符串封裝為一個unicode,比如在這里,由于我們用的是utf-8編碼,所以unicode中的編碼參數使用'utf-8′將字符封裝為

unicode對象,然后正確輸出到控制臺:

 

 
  1. s1=unicode(‘哈', ‘utf-8′)  
  2. print s1 

另外,用decode函數也可以將一個普通字符串轉換為unicode對象。很多人都搞不明白python字符串的decode和encode函數都是什么意思。這里簡要說明一下。

decode是將普通字符串按照參數中的編碼格式進行解析,然后生成對應的unicode對象,比如在這里我們代碼用的是utf-8,那么把一個字符串轉換為unicode就是如下形式:

 

 
  1. s2='哈'.decode(‘utf-8′) 

這時,s2就是一個存儲了'哈'字的unicode對象,其實就和unicode(‘哈', ‘utf-8′)以及u'哈'是相同的。

那么encode正好就是相反的功能,是將一個unicode對象轉換為參數中編碼格式的普通字符,比如下面代碼:

 

 
  1. s3=unicode(‘哈', ‘utf-8′).encode(‘utf-8′) 

s3現在又變回了utf-8的'哈'。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲老头同性xxxxx| 国产精品高清免费在线观看| 欧美在线视频在线播放完整版免费观看| 日韩精品久久久久久久玫瑰园| 亚洲精品网站在线播放gif| 97人洗澡人人免费公开视频碰碰碰| 亚洲成年人在线播放| 欧美性xxxxxxxxx| 亚洲午夜性刺激影院| 成人美女av在线直播| 欧洲成人免费视频| 日韩av中文字幕在线播放| 欧美成人激情在线| 久久国产色av| 国产精品美女999| 亚洲午夜久久久久久久| 热re99久久精品国产66热| 91精品在线播放| xvideos亚洲人网站| 欧美电影院免费观看| 日韩电影大片中文字幕| 成人字幕网zmw| 国产精品久久久久久久久久ktv| 欧美成人精品影院| 久久免费在线观看| 色综合老司机第九色激情| 国产精品大片wwwwww| 北条麻妃99精品青青久久| 最近2019中文字幕在线高清| 精品少妇一区二区30p| 丰满岳妇乱一区二区三区| 亚洲国产精品yw在线观看| 欧美中文在线观看| 欧美一级高清免费播放| 久久久久国产一区二区三区| 久久久亚洲影院你懂的| 国产视频久久久久| 91大神福利视频在线| 国产精品视频中文字幕91| 中文字幕日韩av电影| 国产免费一区视频观看免费| 亚洲欧美综合精品久久成人| 国产精品久久久久久久美男| 欧美—级a级欧美特级ar全黄| 欧美成人高清视频| 粗暴蹂躏中文一区二区三区| 国产69精品久久久久9| 欧美精品videos另类日本| 久久精品视频在线观看| 国产精品亚洲激情| 亚洲自拍偷拍在线| 国产精品自产拍在线观看| 国产欧美一区二区三区在线看| 一区二区三区视频在线| 国产精品久久久精品| 日韩av手机在线观看| 亚洲最新av网址| 亚洲精品av在线播放| www.日本久久久久com.| 久久久噜噜噜久久中文字免| 久久综合久久八八| 欧美一区二区色| 欧美午夜xxx| 久久久成人精品| 亚洲欧美三级伦理| 91精品国产色综合久久不卡98| 欧美日韩精品国产| 久久精品电影网站| 久久99青青精品免费观看| 国产99久久久欧美黑人| 亚洲欧美在线看| 欧美一级片一区| 在线性视频日韩欧美| 欧美成人精品一区二区三区| 亚洲国产美女久久久久| 亚洲高清久久久久久| 在线视频日本亚洲性| 国产精品一久久香蕉国产线看观看| 国产精品综合久久久| 国产精品男人的天堂| 国产免费久久av| 国产在线视频一区| 亚洲热线99精品视频| 国产女精品视频网站免费| 亚洲国产91精品在线观看| 日韩av免费看| 亚洲精品久久久久久下一站| 精品亚洲男同gayvideo网站| 日韩在线中文字幕| 91欧美激情另类亚洲| 色综合色综合久久综合频道88| 国产精品免费看久久久香蕉| 久久精品亚洲94久久精品| 亚洲男人天堂久| 国产精品久久久久久久久借妻| 日韩欧美综合在线视频| 国产欧美精品一区二区三区介绍| 欧美韩国理论所午夜片917电影| 亚洲第一福利网| 欧美国产一区二区三区| 91av福利视频| 久久好看免费视频| 成人福利网站在线观看| 亚洲激情免费观看| 亚洲娇小xxxx欧美娇小| 欧美精品久久久久久久免费观看| 日韩资源在线观看| 欧美亚洲成人精品| 中文字幕亚洲欧美| 日本不卡高字幕在线2019| 国产视频久久网| 日韩亚洲精品视频| 久久亚洲精品国产亚洲老地址| 亚洲已满18点击进入在线看片| 日韩精品久久久久| 91高清视频免费| 国内精品久久久久影院 日本资源| 国产精品综合不卡av| 日韩黄色av网站| 日韩h在线观看| 久久久免费观看| 亚洲综合第一页| 国产精品一区二区久久国产| 国产精品成人一区二区三区吃奶| 国产精品久久久久av免费| 国产精品福利在线观看| 日韩精品亚洲视频| 2018中文字幕一区二区三区| 欧美激情在线狂野欧美精品| 久久深夜福利免费观看| 亚洲国产另类久久精品| 国产精品亚洲自拍| 美日韩在线视频| 亚洲精品网站在线播放gif| 中文字幕日韩高清| 77777亚洲午夜久久多人| 国产欧美精品久久久| 日韩激情视频在线播放| 国产精品一区二区三区成人| 国产午夜精品全部视频播放| 日本一区二区在线免费播放| 久久久亚洲国产| 成人网页在线免费观看| 欧美日韩电影在线观看| 亚洲夜晚福利在线观看| 欧美精品在线视频观看| 亚洲国产精品国自产拍av秋霞| 成人乱人伦精品视频在线观看| 91久久国产综合久久91精品网站| 国产精品视频公开费视频| 国产在线日韩在线| 欧美黄网免费在线观看| 精品丝袜一区二区三区| 亚洲成人a**站| 久久人人97超碰精品888| 久久久久久久久电影| 亚洲免费视频观看| 国产成人综合一区二区三区| 久久九九精品99国产精品| 日韩精品视频在线| 国产不卡一区二区在线播放| 久久国产精品久久久久| 亚洲精品福利免费在线观看| 国产精品嫩草影院久久久|