[Ubuntu] bash: warning: setlocale: LC_ALL: cannot change locale


問題症狀

-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.utf8)

解決方法

本地化是指不同地區用戶在鍵盤上輸入不同語言的字符集。例如 en_US 表示美國英語字符集,因此只有正確設置了服務器的字符集,服務器才能理解用戶的輸入字符。setlocale 命令可以幫助用戶來設置本地化字符集。

出現以上問題是因為服務器無法理解 en_US.UTF-8 字符集,因此首先要在服務器上生成 en_US.UTF-8 字符集:

sudo locale-gen en_US.UTF-8

然后使用最新生成的字符集更新本地倉庫:

sudo dpkg-reconfigure locales

最后更新 /etc/default/locale 文件,例如更新前的文件內容為:

LANG=C.UTF-8

更新后:

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

環境變量 LC_ALL 會覆寫所有的本地化設置(在某些情況下 $LANGUAGE 不會被覆寫),例如 LC_NAME, LC_ADDRESS 等等。設置 LC_ALL=en_US.UTF-8 表示所有的本地化設置都使用 en_US.UTF-8。

重新登錄服務器,warning 警告不再出現,問題解決。

Ref:

bash: warning: setlocale: LC_ALL: cannot change locale (en_US)


免責聲明!

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



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