導航:首頁 > 編程語言 > pythonlogging中文亂碼

pythonlogging中文亂碼

發布時間:2022-08-14 22:56:00

python3 中文輸出亂碼問題

python 3和2很大區別就是python本身改為默認用unicode編碼。
字元串不再區分"abc"和u"abc", 字元串"abc"默認就是unicode,不再代表本地編碼、
由於有這種內部編碼,像c#和java類似,再沒有必要在語言環境內做類似設置編碼,比如「sys.setdefaultencoding」;
也因此也python 3的代碼和包管理上打破了和2.x的兼容。2.x的擴展包要適應這種情況改寫。

另一個問題是語言環境內只有unicode怎麼輸出gbk之類的本地編碼。

答按慣例都在(序列化)輸出時才轉換成本地編碼。
比如

file.write("GBK的中文".encode("GBK"))

python環境內字元串用str.encode("GBK")方法輸出成位元組串用於和其他環境交流。

⑵ python寫文件中文亂碼

解決思路:

修改excel 打開csv 文件的編碼(可能會影響其它文件的打開,不作為首選方式)
修改python 打開文件的編碼 utf-8 -> utf-8-sig
修改前的編碼
f=open(filename,'w',encoding='utf-8')
修改後的編碼
f=open(filename,'w',encoding='utf-8-sig')

⑶ python 用logging打log 第二天中文都是亂碼 å<8d><8e>å¸<9d>

你用ue或者兼容uft8的工具打開這個文件
或者轉成gbk保存試試

⑷ python中文顯示亂碼,已經在開頭有了coding: utf-8

亂碼原因:
因為你的文件聲明為 utf-8,並且也應該是用 utf-8 的編碼保存的源文件。但是 windows 的本地默認編碼是 cp936,也就是 gbk 編碼,所以在控制台直接列印 utf-8 的字元串當然是亂碼了。

解決方法:

py文件用記事本打開,另存為utf-8格式即可

⑸ python命令行輸入中文亂碼怎麼辦

python2.X,代碼中指定了UTF-8,但是在cmd命令行窗口時,列印的中文仍然會亂碼。

在python3不存在該問題

運行結果:

原因

中文windows默認的輸出編碼為gbk ,與腳本中定義的UTF-8不一樣,所以出現了解碼失敗的情況。

相關推薦:《Python基礎教程》

解決方法

有如下兩種方法可以解決這個問題

方法一

我們可以通過先把中文解碼為unicode,然後再轉化為gbk來解決這個問題:

修改後運行結果:

方法二

當然,我們也可以通過改變cmd命令行窗口的輸出格式來解決這個問題:

·chcp 65001 就是換成UTF-8代碼頁

·chcp 936 可以換回默認的GBK

但是這樣就降低了腳本的兼容性,在其他環境運行的時候可能還會出現這樣的錯誤,而且可能會影響其他腳本運行,所以推薦使用第一種方法。

⑹ python中的中文亂碼問題

你的運行環境應該是Windows的cmd下吧

#!/usr/bin/python
#coding:utf-8

os_char='gb18030'

printu"直接列印Unicode"
printu"Unicode轉換成GB18030".encode(os_char)
print"UTF-8中文轉換到GB18030,然後再列印".decode("utf-8").encode(os_char)

⑺ python編程中中文輸出亂碼UnicodeEncodeError: 'ascii' codec can't encode character

樓主你好!

其實按照你的代碼的邏輯來做是沒有錯的,無法顯示成utf-8編碼的文本其實是因為在request請求的時候,按照網頁的標識轉了碼,接著BeautifulSoup把已經是utf-8的文本又強轉了一次utf-8編碼,導致了無法正確的顯示,以想要拿到的時間為例,其實程序的目標字元串應該如下:

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

'''我們想要使用的字元串'''
target_str=':53'

'''兩次轉碼後的字元串'''
get_str=u':53'


歸根結底是兩個對象的類不同,但python不支持這兩種類型的強轉,個人想了個比較臨時的解決方案,算是個python打了個補丁,就是將字元串轉成二進制,再轉回字元串,這樣就unicode就不用給他加上編碼方式再轉成二進制字元串了,修改後的代碼如下:

#-*-coding:utf-8-*-
importrequests
frombs4importBeautifulSoup
fromdatetimeimportdatetime

defencode(s):
'''將字元串轉成二進制'''
return''.join([bin(ord(c)).replace('0b','')forcins])

defdecode(s):
'''將二進制轉換成字元串'''
return''.join([chr(i)foriin[int(b,2)forbins.split('')]])

res=requests.get('
)
res.encodeing='utf-8'

soup=BeautifulSoup(res.text,'html.parser')

'''每個中文字元都進行轉換處理'''
title=decode(encode(soup.select('#artibodyTitle')[0].text))
time=decode(encode(soup.select('.time-source')[0].contents[0].strip()))

chinese='%Y年%m月%d日%H:%M'
timesource=datetime.strptime(time,chinese)
print(title)
print(timesource)

看樓主在研究的過程中,對字元串的編碼原理的理解還有所欠缺,這方面的資料在網上很多,可以再自行研究一下,能夠獲得長足的進步。

望採納,謝謝!

⑻ python 使用logging,生成的log文件是什麼編碼格式腳本的編碼格式決定系統的編碼格式決定

log的文件當然是byte格式。或者是無格式的。漢字編碼取決於你自己設定的類型。

#coding:utf-8這個東西,只在python2下有效果。還需要編程器配合。你使用python自帶的idle當然是沒有問題的。

log中的漢字是一定要編碼的。不編碼你存貯不了。

編輯器本身的預設編碼格式要與你的源代碼編碼一致,不然看到的就是亂碼。如果是idle,它會根據python腳本自動識別。

不過有些編輯器是有些不智能的。它不能理解python腳本第一行的提示。所以有時候,覺著很別扭自己要手工保持編輯器的編碼與源碼一致。還需要維護那個coding:utf-8
不過python3已將這一句去掉了。源代碼全部要求使用utf-8編碼(也許是utf-16),我很少用python3

⑼ python log中文亂碼

Python log出現中文亂碼的解決方法:修改「handle」的「encode」參數為「utf-8」,即在源碼中修改「encoding='utf-8'」。

python log寫入中文亂碼,直接修改handle的encode參數為utf-8
即在源碼中修改encoding='utf-8',因為 logging.basicConfig() 配置時實際上是用到了4大組件,只不過給了默認值,在loging.FileHandler()方法中默認是這樣的。

只需在源碼中修改。
推薦課程:零基礎入門學習Python(小甲魚)

閱讀全文

與pythonlogging中文亂碼相關的資料

熱點內容
超級命令的英文 瀏覽:781
做賬為什麼要用加密狗 瀏覽:583
考研群體怎麼解壓 瀏覽:156
linux修改命令提示符 瀏覽:224
圓圈裡面k圖標是什麼app 瀏覽:59
pdf加空白頁 瀏覽:945
linux伺服器如何看網卡狀態 瀏覽:316
解壓新奇特視頻 瀏覽:706
圖書信息管理系統java 瀏覽:554
各種直線命令詳解 瀏覽:863
程序員淚奔 瀏覽:147
素材怎麼上傳到伺服器 瀏覽:516
android百度離線地圖開發 瀏覽:191
web可視化編程軟體 瀏覽:294
java筆試編程題 瀏覽:746
win11什麼時候可以裝安卓 瀏覽:564
java不寫this 瀏覽:1001
雲點播電影網php源碼 瀏覽:97
pythonclass使用方法 瀏覽:226
移動加密軟體去哪下載 瀏覽:294