python寫文件亂碼
① python命令行輸入中文亂碼怎麼辦
python2.X,代碼中指定了UTF-8,但是在cmd命令行窗口時,列印的中文仍然會亂碼。
在python3不存在該問題
運行結果:
原因
中文windows默認的輸出編碼為gbk ,與腳本中定義的UTF-8不一樣,所以出現了解碼失敗的情況。
相關推薦:《Python基礎教程》
解決方法
有如下兩種方法可以解決這個問題
方法一
我們可以通過先把中文解碼為unicode,然後再轉化為gbk來解決這個問題:
修改後運行結果:
方法二
當然,我們也可以通過改變cmd命令行窗口的輸出格式來解決這個問題:
·chcp 65001 就是換成UTF-8代碼頁
·chcp 936 可以換回默認的GBK
但是這樣就降低了腳本的兼容性,在其他環境運行的時候可能還會出現這樣的錯誤,而且可能會影響其他腳本運行,所以推薦使用第一種方法。
② 怎麼解決Python3亂碼問題
如果是Python文件用編輯器打開時出現亂碼,將編輯器調試成utf-8或者gb2312顯示。如果是運行Python文件時顯示亂碼,則修改Python文件,在文件頂部添加:#
code
=
utf-8
③ python代碼復制到wps亂碼
具體操作如下:
1、可以先復制到記事本中,沒問題了,再從記事本復制word中。系統默認記事本使用的是默認的可以正常顯示的編碼。
2、也可以用Notepad2等可以選擇編碼的文本軟體。亂碼時可以選擇「重新編碼」,在彈出的選項中進行選擇,總有一個能正常顯示的。正常後再復制到word文件中。
3、直接復制到word文件中時,可以選擇無格式文本粘貼,直接用word默認編碼顯示。點粘貼下面的下箭頭,點選擇性粘貼。在彈出的窗口中選擇即可。
④ python中文顯示亂碼,已經在開頭有了coding: utf-8
亂碼原因:
因為你的文件聲明為 utf-8,並且也應該是用 utf-8 的編碼保存的源文件。但是 windows 的本地默認編碼是 cp936,也就是 gbk 編碼,所以在控制台直接列印 utf-8 的字元串當然是亂碼了。
解決方法:
py文件用記事本打開,另存為utf-8格式即可
⑤ Python為什麼一運行就是亂碼
可能是編碼問題,開頭加上coding:utf-8試試。
⑥ python print中文亂碼問題 win10 Python2
python2字元串編碼的問題,如果要輸出中文可以使用u前綴,這樣就可以直接使用了
a=u'你好'
printa
這樣就可以了
⑦ 為什麼python文件打開有亂碼
腳本開頭加 # -*- coding: utf-8 -*-用文本編輯器 打開腳本文件,將腳本文件的編碼 設置成 ANSI,保存腳本,在 IDLE 中運行,查看結果正常;# -*- coding: utf-8 -*-#這是一個注釋的練習print "這是我的第一個學習練習。Python 2"測試結果,中文顯示正常。
⑧ python用xlwt向xls中寫入中文,顯示亂碼該怎麼解決
亂碼是編碼問題,微軟的excel默認打開的編碼是gbk,如果你寫入的數據是非gbk編碼的,那麼使用微軟excel打開就會出現亂碼的情況。解決方法為:對要寫入的數據編碼為gbk之後在進行寫入,在python中的簡單的操作方法如下:
1.源數據為unicode編碼,則直接使用encode("gbk")即可轉換編碼;
str=u"我愛中國共產黨"#unicode編碼的字元串
des_str=str.encode("gbk")#轉換為gbk編碼
2.源數據不是unicode編碼,那麼必須先使用decode函數解碼為unicode編碼,在按照第一種情況轉換為gbk編碼。
str=u"我愛中國共產黨"#unicode編碼的字元串
src_str=str.encode("utf-8")#源數據格式utf-8
des_str=str.decode("utf-8").encode("gbk")#轉換為gbk編碼
注意:encode和decode方法為字元串的方法,不能應用與列表等其他類型的數據上
⑨ python輸出到文件亂碼如何解決
python代碼文件的編碼
py文件默認是ASCII編碼,中文在顯示時會做一個ASCII到系統默認編碼的轉換,這時就會出錯:SyntaxError: Non-ASCII character。需要在代碼文件的第一行或第二行添加編碼指示:
1 # coding=utf-8 ##以utf-8編碼儲存中文字元
2 print '中文'
像上面那樣直接輸入的字元串是按照代碼文件的編碼來處理的,如果用unicode編碼,有以下三種方式:
1 s1 = u'中文' #u表示用unicode編碼方式儲存信息
2 s2 = unicode('中文','gbk')
unicode是一個內置函數,第二個參數指示源字元串的編碼格式。
decode是任何字元串具有的方法,將字元串轉換成unicode格式,參數指示源字元串的編碼格式。
encode也是任何字元串具有的方法,將字元串轉換成參數指定的格式。
(2)、字元串的編碼
用 u'漢字' 構造出來的是unicode類型,不用的話構造出來是str類型
str的編碼是與系統環境相關的,一般就是sys.getfilesystemencoding()得到的值
所以從unicode轉str,要用encode方法
從str轉unicode,所以要用decode
例如:
# coding=utf-8 #默認編碼格式為utf-8
s = u'中文' #unicode編碼的文字
print s.encode('utf-8') #轉換成utf-8格式輸出
但當python中間處理非ASCII編碼時,經常會出現如下錯誤:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
0x??是超出128的數字,python在默認的情況下認為語言的編碼是ascii編碼,所以無法處理其他編碼,需要設置python的默認編碼為所需要的編碼。
一個解決的方案是在代碼中添加:
import sys
reload(sys)
sys.setdefaultencoding('utf-8') (其中utf-8為你想輸出的字元編碼)
解釋:
sys.setdefaultencoding方法在python導入site.py後就刪除了(具體代碼查看site.py就可以看到)因此如果想用的話可以再重新load進入
總結:
u=u'unicode編碼文字'
g=u.encode('gbk') #轉換為gbk格式
print g #此時為亂碼,因為當前環境為utf-8,gbk編碼文字為亂碼
str=g.decode('gbk').encode('utf-8') #以gbk編碼格式讀取g(因為他就是gbk編碼的,需要事先知道它是GBK編碼)並轉換為utf-8格式輸出
print str #正常顯示中文(同文件輸出)
安全的方法:
s.decode('gbk','ignore').encode('utf-8′) #以gbk編碼讀取(當然是讀取gbk編碼格式的文字了)並忽略錯誤的編碼,轉換成utf-8編碼輸出。
推薦學習《Python教程》!