'ascii' codec can't encode character '\u82b1' in position 0: ordinal not in range(128)

最近遇到一個問題,新建的一個鏡像里面跑的代碼無法支持中文。錯誤如下:
'ascii' codec can't encode character '\u82b1' in position 0: ordinal not in range(128)


error.png

1、代碼encoding

第一反應(yīng)是代碼里面沒有做好中文的encoding,但仔細(xì)檢查之后發(fā)現(xiàn)代碼沒有問題,并且代碼在其他環(huán)境上是能跑的

2、鏡像打入的包版本不對

又看了一下鏡像里打入的依賴包,和我在其他機(jī)器上用的不一樣,有可能包版本導(dǎo)致的,雖然可能性不大,只能硬著頭皮試一下,over


error.png

3、python里輸入輸出語言編碼不對

好吧,都懷疑到python上了,主要看看python中調(diào)用了什么系統(tǒng)編碼


image.png

oh, 貌似設(shè)置也沒啥問題

4、系統(tǒng)LC_ALL設(shè)置

細(xì)看錯誤'ascii' codec can't encode character '\u82b1' in position 0,代碼中、python設(shè)置無論哪里都沒有設(shè)置ascii編碼,可以猜測在執(zhí)行到這一步的時候,默認(rèn)采用了ascii編碼,只能想到系統(tǒng)語言設(shè)置上去了,果然是這樣的。
LC_ALL實(shí)際包含12個LC_*的設(shè)置

LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"

對,就要要設(shè)置這個東西,設(shè)置的辦法網(wǎng)上很多,正常只需要export LC_ALL="en_US.UTF-8", 若出現(xiàn)

bash: warning: setlocale: LC_ALL: cannot change locale (en_AU.UTF-8)

錯誤,可以按下面這樣配置。

locale-gen "en_US.UTF-8"
dpkg-reconfigure locales
export LC_ALL="en_US.UTF-8"

完事,這是設(shè)置系統(tǒng)的默認(rèn)語言和編碼方式。
這是根音根音根音
done

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容