[英]UnicodeEncodeError with Windows console in Python 3
我仔細閱讀了與此問題相關的其他主題,但沒有一個主題直接回答該問題。 我希望也許大家都能提供幫助。
我正在清理長期濫用和未清理過的Wordpress主題。 我們大約有10-12個未使用的CSS文件。 在我即將刪除它們之前,有人告訴我某些文件可能已在站點的實際內容中引用。 Shudder我正在使用Python在該行中搜索文件名。 如果找到該名稱,則會從其所在的文件中渲染該行,並完整顯示該行。 最后,它顯示最終結果並關閉文件等。這是代碼。 (抬頭...我對Python不太滿意。)
cssfile = open("css.txt", "r")
s = open("berea.sql", "r", encoding="utf-8")
totalfound = 0
lineinfile = 0
for filename in cssfile:
for line in s:
lineinfile = lineinfile+1
for filename in line:
print (lineinfile, line)
totalfound = totalfound+1
lineinfile=0
if totalfound == 0:
print ("No results were found for %s") % filename
else:
print ("We found %i of %s in the database") % (totalfound, filename)
cssfile.close()
searchfile.close()
老實說,最大的問題來自我收到的編碼錯誤。
UnicodeEncodeError: 'charmap' codec can't encode character '\u2013' in position
445: character maps to <undefined>
我已經看到添加不同的解碼,編碼等可以解決該問題,但是似乎沒有任何效果……我將不勝感激。 我有大約349,000條要搜索的行,並且一直停在830行。
https://wiki.python.org/moin/PrintFails詳細說明了此錯誤。
“ UnicodeEncodeError:'charmap'編解碼器無法在位置0編碼字符u'\\ u1234':字符映射為未定義”
這意味着python控制台應用程序無法將給定字符寫入控制台的編碼。
更具體地說,python控制台應用程序創建了一個_io.TextIOWrapperd實例,該實例的編碼無法表示給定字符。
...
默認情況下,Microsoft Windows中的控制台僅顯示256個字符(“代碼頁437”的cp437,原始的IBM-PC 1981擴展ASCII字符集。)
如果您嘗試打印無法打印的字符,則會收到UnicodeEncodeError。
如上所述設置PYTHONIOENCODING環境變量可用於抑制錯誤消息。 不建議將其設置為“ utf-8”,因為這會導致控制台輸出的顯示不准確,亂碼。 為了獲得最佳結果,請使用控制台的正確默認代碼頁和“ strict”以外的適當錯誤處理程序。
嘗試忽略一些建議,並在Windows CMD中執行以下操作:
set PYTHONIOENCODING=utf-8 chcp 65001
還將控制台字體設置為:Lucinda Console
這應該將控制台設置為糟糕的UTF-8仿真,並強制Python編碼為UTF-8。
您可能會發現,將結果寫入UTF-8編碼的文件而不是寫入控制台更為簡單。
在Windows中,只需從Python IDLE GUI(而不是控制台窗口)運行它即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.