又 双叒叕的乱码了

316 阅读1分钟

今天我午休正在吃薯片,运维小李急急忙忙的跑过来让我帮着看一下问题。

小李:“cultivater 在忙吗 帮忙看个问题?;

我:“不看;

小李: "你看";

我: "不看";

小李:"你看";

我:“不看”;

小李:"你看看嘛";

我:“发生甚么事了?”;

小李:“走,我带你去看看,不知道怎么回事,客户端显示乱码......”;

我一看,也不是全部显示乱码,只不过是部分生僻字显示乱码,我大概猜想可能是编码问题。

我:“你在服务端时候放个断点,定位是在哪一步开始的乱码?”

小李一顿操作猛如虎,a moment latter......................直接是在从mapper拿出数据的时候那些生僻字就乱码了,但是那些显示乱码的汉字在数据库却是正常显示。

我:“你查一下数据库编码或者字符集?”

a moment latter......................

小李:"数据库字符集是GB18030";

我:"GB18030是变长多字节字符集,它可以容纳更多的汉字,咱们服务器上现在默认的字符集是GBK,这个GB18030可以比GBK容纳更多的汉字,所以你从服务器上看到的生僻字是乱码应该是这个原因,所以你启动jar包的时候写一个shell脚本,临时指定服务器字符集为GB18030,应该就ok了";

像这样:export LANG=zh_CN.GB18030

我和小李一起验证了我的想法,果然乱码问题解决了,我又双叒叕的去吃薯片了。