Python中locale如何配置setlocale()的參數?

本人編程弱雞一枚,在擼Python的時候 碰到了一個問題,關於locale下的setlocale()函數配置報錯,報錯如圖所示:

該問題在stackoverflow中給出的提示是:可能本地locale中不包含該編碼,但是本地是含有L7中的編碼.

而 L6中的編碼 ,在執行cmd locale -a的時候,後面也是含有的:

既然如此,為何在執行 locale.setlocale 的時候就開始報錯了呢?

補充: 相關配置參數:

而且,使用win推薦的zh_CN依然報錯....


Windows的setlocale並不是很符合基本法(POSIX規範),你可以試試setlocale(LC_ALL, "chinese"),setlocale(LC_ALL, "english")。而C.UTF-8這樣的是POSIX規範的locale,Linux下可以用,Windows下不能這麼用。

這有篇資料寫的不錯:C標準庫的setlocale()用法筆記 - Leo Chin - 博客園

另外,Windows下不支持將locale設置為UTF-8,你可以死心了。

非常不建議使用setlocale來做多語言支持,永遠應該通過Unicode和encode/decode處理位元組到unicode轉換,內部邏輯使用和locale無關的數值,輸出結果的時候永遠使用當前locale。


推薦閱讀:

你看好 Python 3 嗎?
如何用python網路爬蟲求兩個城市間鐵路距離呢?
python中如何理解裝飾器代碼?
哪些庫是 Python2 獨有而 Python3 暫時不支持的?
python進階中,關於買書的問題!?

TAG:Python | Python3x | Python入門 |