最近遠程SSH到服務器運行程序經常出現 “UnicodeEncodeError: 'ascii' codec can't encode character in position 0: ordinal not in range(128)” 這個錯誤,起初以爲是我用 Sublime Text 3文件設置的編碼問題,後來看了編碼也不是。之後用服務器本地的終端運行程序就沒有出現這個錯誤,因此確定錯誤是出現在 MAC 這邊的, 究竟 MAC 這邊是Iterm的問題還是系統的問題需要確定一下,後來用系統自帶的終端運行程序沒有出現上面說的問題。
這下確定了是由於我使用的Iterm終端加 Oh-My-Zsh的編碼問題,這下確定了之後就好辦了。經過一堆搜索之後,確定瞭解決辦法。
首先在終端輸入,查看你的編碼集,
locale
我的出來的是一堆,zh_CN.UTF-8 的編碼。vim ~/.zshrc
在文件的末尾加入:
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
當然我直接更改了更多的省事。
export LANG=en_US.UTF-8
export LC_CTYPE="en_US.UTF-8"
export LC_NUMERIC="en_US.UTF-8"
export LC_TIME="en_US.UTF-8"
export LC_COLLATE="en_US.UTF-8"
export LC_MONETARY="en_US.UTF-8"
export LC_MESSAGES="en_US.UTF-8"
export LC_PAPER="en_US.UTF-8"
export LC_NAME="en_US.UTF-8"
export LC_ADDRESS="en_US.UTF-8"
export LC_TELEPHONE="en_US.UTF-8"
export LC_MEASUREMENT="en_US.UTF-8"
export LC_IDENTIFICATION="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
再在終端下面輸入:
locale
就可以看到字符編碼更改了。中文輸入和顯示問題就解決了。
-----------------EOF--------------------