Ubuntu 下解决 LC_CTYPE/LC_ALL 没法设置致使的中文乱码问题

今天登陆一台好久没有登陆的服务器执行一条 SQL,发现输入中文所有变成乱码了。html

服务器的版本是 Ubuntu 16.04,以前借给朋友装过 Confluence 之类的软件测试,不知道是否是跟这个问题有关。ubuntu

无论,先执行如下命令:服务器

export LANG='zh_CN.UTF-8'
export LC_ALL='zh_CN.UTF-8'

执行后仍是不行。网上搜了搜,找到这篇文章:解决ubunut系统locale: Cannot set LC_CTYPE to default locale: No such file or directory,看起来不错,最终确实解决了个人问题。测试

解决过程

mkdir -p /var/lib/locales/supported.d/
cp /usr/share/i18n/SUPPORTED /var/lib/locales/supported.d/local
cd /var/lib/locales/supported.d/

cat local  |grep "en_US.UTF-8 UTF-8" > 1.txt
cat local  |grep "zh_CN.UTF-8 UTF-8" >> 1.txt
rm -rf local && mv 1.txt  local
locale-gen  --purge
locale

这时候应该就行了,不过仍是要先检查一下 locale 命令的输出。
若是执行发现 LC_ALL 的值仍是有问题(我这里为空),则执行:.net

export LC_ALL=zh_CN.UTF-8

至此,问题解决。code

注意

这样的方式实际上是让系统的语言变成中文。而以前默认是英文的,且中文也没有乱码,更优的方案须要进一步研究。htm


原文地址: CroWall Notesblog

相关文章
相关标签/搜索