簡體   English   中英

Windows 3控制台中的UnicodeEncodeError在Python 3中

[英]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編碼的文件而不是寫入控制台更為簡單。

使用https://github.com/Drekin/win-unicode-console

在Windows中,只需從Python IDLE GUI(而不是控制台窗口)運行它即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM