PYTHONIOENCODING = UTF-8 引發的血案


血案:

我就是想在Jenkins上運行一段自動化python代碼,就是最簡單的本地控制台輸出, 我就不懂了它為什么一直是去找 cp1252.py 編碼???目前, 確定 pycharm 運行腳本很OK

File "D:\Python37\lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 62-65: character maps to <undefined>

 

 

 

 

 

 

猜想和摸索:

1. 難道cmd 編碼有問題?不能輸出中文?

為此我找了一大批參考資料

1)計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor,添加Autorun = @chcp 65001>nul

2)cmd -> 屬性 -> 字體改為 kaiti

cmd 能美美地顯示中文了,python auto_test.py, 很OK。 但是Jenkins里還是報一樣的錯

 

2. Jenkins 自己編碼有問題?

為此我又找了一大批參考資料。

jenkins.xml  添加 <env name="JAVA_TOOL_OPTIONS" value="-Dsun.jnu.encoding=UTF-8 -Dfile.encoding=UTF-8"/>

Manage Jenkins -> System info 里,確保下面兩項顯示 UTF-8

然而,依舊沒有用,報一樣的錯

 

  

 

 3. 我就和這個問題杠上了,我去pycharm里 看了一下我的settings->File encodings, 真有個可疑的 cp1252, 我也改成了utf-8

但是 pycharm 和 jenkins 畢竟沒什么關系啊, 所以這個也沒有用

 

 

4. PYTHONIOENCODING = UTF-8 

死馬當活馬醫的最后,想想還是python 有點問題,因為jenkins運行python 腳本, 去找了 D:\Python37\lib\encodings\cp1252.py, 我怎么告訴它要去找 utf_8.py 呢?

查看了一些關於python的編碼文章 —— 最終看到了環境變量 PYTHONIOENCODING

我選擇加在 jenkins.xml里, <env name="PYTHONIOENCODING" value="UTF-8"/>

終於成功輸出了中文!

折騰了4個小時。。。

如果你有更好的答案,請告訴我!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM