1. 程式人生 > >Python UnicodeEncodeError: 'gbk' codec can't encode character 解決方法,需要的朋友可以參考下

Python UnicodeEncodeError: 'gbk' codec can't encode character 解決方法,需要的朋友可以參考下

最近研究用聚類演算法實現日誌的分類,在得到結果後準備將結果寫入到指定文字是出現了這樣的錯誤:

經過網上多次查詢得到了解決方案:

就是在開啟一個文字準備寫入的同時同樣要指定一下字符集。這樣他就會以同樣的字符集開啟你要分析的文字。

總結:

使用Python寫檔案的時候,或者將網路資料流寫入到本地檔案的時候,大部分情況下會遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 這個問題。 網路上有很多類似的檔案講述如何解決這個問題,但是無非就是encode,decode相關的,這是導致該問題出現的真正原因嗎?不是的。 很多時候,我們使用了decode和encode,試遍了各種編碼,utf8,utf-8,gbk,gb2312等等,該有的編碼都試遍了,可是編譯的時候仍然出現: UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position XXX。 崩潰了。

在windows下面編寫python指令碼,編碼問題很嚴重。

將網路資料流寫入檔案時時,我們會遇到幾個編碼:

    1: #encoding='XXX' 這裡(也就是python檔案第一行的內容)的編碼是指該python指令碼檔案本身的編碼,無關緊要。只要XXX和檔案本身的編碼相同就行了。 比如notepad++ "格式"選單裡面裡可以設定各種編碼,這時需要保證該選單裡設定的編碼和encoding XXX相同就行了,不同的話會報錯

    2:網路資料流的編碼 比如獲取網頁,那麼網路資料流的編碼就是網頁的編碼。需要使用decode解碼成unicode編碼。

    3:目標檔案的編碼 要將網路資料流的編碼寫入到新檔案,那麼我麼需要指定新檔案的編碼。寫檔案程式碼如:


f.write(txt)  


那麼txt是一個字串,它是通過decode解碼過的字串。關鍵點就要來了:目標檔案的編碼是導致標題所指問題的罪魁禍首。如果我們開啟一個檔案:


f = open("out.html","w")  


在windows下面,新檔案的預設編碼是gbk,這樣的話,python直譯器會用gbk編碼去解析我們的網路資料流txt,然而txt此時已經是decode過的unicode編碼,這樣的話就會導致解析不了,出現上述問題。 解決的辦法就是,改變目標檔案的編碼:


f = open("out.html","w",encoding='utf-8')  


這樣,問題將不復存在。

首先指定字符集:

相關推薦

Python UnicodeEncodeError: 'gbk' codec can't encode character 解決方法,需要朋友可以參考

最近研究用聚類演算法實現日誌的分類,在得到結果後準備將結果寫入到指定文字是出現了這樣的錯誤: 經過網上多次查詢得到了解決方案: 就是在開啟一個文字準備寫入的同時同樣要指定一下字符集。這樣他就會以同樣的字符集開啟你要分析的文字。 總結: 使用Python寫檔案的

python基礎知識】python輸出時出錯,UnicodeEncodeError: 'gbk' codec can't encode character '\ue4bf.....

python的print()函式預設好像列印GBK編碼的格式,所以需要列印的字串需要改變編碼格式。 查詢到一個有用的辦法,看原文: ----------------------------------------------------------------------

python寫入文件中遇到 UnicodeEncodeError: ‘gbkcodec cant encode character 錯誤的解決辦法

error ror window 聲明 nco 參數 utf-8 練習 error: 在寫入TXT文件時,某些頁面總是報UnicodeEncodeError: ‘gbk’ codec can’t encode character錯誤,網上找了半天也沒找到解決辦法。 後來

python 寫入檔案時,報錯:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 1806: ille

最近用到python 爬取智聯招聘上的網頁,想把頁面儲存本地: def writeintofile(filename, str): # 開啟檔案 fo = open(filename, 'w') # 寫的方式開啟檔案 prin

解決python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX

從網上抓了一些位元組流,想打印出來結果發生了一下錯誤: UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 8530: illegal multibyte sequence 程式

UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 46:illegal multibyte seque

一、 最近使用python寫入檔案時,出現瞭如下的錯誤: 但是content的內容是unicode編碼,不知道怎麼和gbk扯上了關係,對content使用encode()和decode(),用gbk,utf-8,gb2312各種編碼解碼都沒有效果; 結論是: 1

爬取網頁資料時,出現UnicodeEncodeError: 'gbk' codec can't encode character '\ue4bf'

UnicodeEncodeError: 'gbk' codec can't encode character '\ue4bf' in position 1235: illegal multibyte 網頁的資料應該是'utf-8'編碼,這個可以在網頁的head上面看得到,然

關於openerp的bug報錯UnicodeEncodeError: 'ascii' codec can't encode character u'\u20ac' in position 2917

這個報錯是openerp的bug,生成報表的時候跳出報錯。解決方案:修改openerp的啟動檔案,在http.py檔案中加入如下語句:$ import sys $ reload(sys) $ sys.s

Python3 編碼問題:UnicodeEncodeError: 'ascii' codec can't encode character '\U0001f621' in posit

錯誤描述及分析 最近跑程式遇到一個很神奇的問題,程式在輸出的時候,前面都是正常的,但是中間同樣的code在執行的時候卻報錯: UnicodeEncodeError: ‘ascii’ codec can’t encode character ‘\U0001f6

[python]UnicodeEncodeError: 'gbk' codec can't encode character 解決方法

通過 gbk error har 代碼 獲取網頁 out can 解析 在windows下面編寫python腳本,編碼問題很嚴重。 將網絡數據流寫入文件時時,我們會遇到幾個編碼: 1: #encoding=‘XXX‘ 這裏(也就是python文件第一行的內容)的編碼是指該p

python中文編碼問題解決UnicodeEncodeError: 'ascii' codec can't encode characters in position 10-14: ordinal n

編碼報錯: https://www.baidu.com/s?wd=渴望飛的魚 UnicodeEncodeError: 'ascii' codec can't encode characters in

python字元編碼和解碼問題 UnicodeEncodeError 'gbk' codec can't encod

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                     先說說我為何出現了這個問題,因為學完爬蟲後想拿豆瓣電影Top250練練手,這個是參考的連結(http://blog.csdn.net/fighting

Python問題: UnicodeEncodeError:'ascii' codec can't encode characters in position

在Windows、Python2.7下寫入txt檔案時發現報錯了,報錯資訊如下: UnicodeEncodeError: 'ascii' codec can't encode characters i

python 格式化時間含中文報錯: ‘locale‘ codec cant encode character ‘u5e74‘

文字 print pos alt position ror span 執行 rac 執行下面代碼報錯:UnicodeEncodeError: ‘locale‘ codec can‘t encode character ‘\u5e74‘ in position 2: Ille

解決Python2.7的UnicodeEncodeError: ‘ascii’ codec cant encode異常錯誤

def 好的 列數 tab 2.7 模式 fault 應用 ber 今天準備將某SQLite數據庫的內容導出到文本文檔(*.txt)中,設計的Python程序如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

macOS解決sublime text3執行python3報:UnicodeEncodeError: 'ascii' codec can't encode characters in position

問題背景:macOS剛裝上python3和sublime test,匯入原來在windows上寫的python指令碼(在windows上執行正常),執行後報錯UnicodeEncodeError: 'ascii' codec can't encode characters i

解決 UnicodeEncodeError: 'ascii' codec can't encode characters in position 16-20: ordinal not in range

python中因編碼問題報錯: Traceback (most recent call last): File "a*.py", line 61, in <module> m*w

Python2.7的UnicodeEncodeError: ‘ascii’ codec cant encode

Python2.7下,在我準備將中文寫進list,並且存入csv時,報錯如下 UnicodeEncodeError: ‘ascii’ codec can’t encode 解決方案為: imp

err ‘ascii’ codec cant encode character u’\u7684′ in position 7: ordinal not in range(128)

又遇到 python 2.x 的編碼問題,一樣的程式碼在 Mac OS 上可以執行沒問題,放到 Linux上就出錯。但我又不想使 Dirty Hack 的方式去 reload sys. 下面這段 code: import sys; print(sys.getdefaultencoding()) pri

'latin-1' codec can't encode character解決方案

分析一個字串,並更新資料庫的時候,出現瞭如下錯誤: 'latin-1' codec can't encode character u'\u017e' in position 11: ordinal not in range(256) 進行了一些研究發現,原因是,資料庫的編碼