经常遇到乱码问题,再次做一下总结可能不全,后期也会不定期更新。
1.服务器乱码
正常的UTF-8服务器编码应该是这样的吧。修改成功可以仔细对照下是不是一样。
huadong@d2692bb6bc28:~/szab_wx$ locale
LANG=zh_CN:UTF-8
LANGUAGE=zh_CN:zh:en_US:en
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=zh_CN.UTF-8
修改方式1:修改配置文件
vi /ect/local
或者vi /etc/environment
或者/var/lib/locales/supported.d/local
,此处local的路径自己找一下。修改完执行locale-gen
使配置生效,记得用root权限。 这种方式好处是可以永久生效,坏处是配置文件不太好找。所以还有第二种方式。
修改方式2:直接修改环境变量
export LANG=zh_CN.UTF-8
export LANGUAGE=zh_CN:zh:en_US:en
export LANGUAGE=LC_ALL=zh_CN.UTF-8
这种配置方式重新启动服务器就失效了。 修改完后用locale
看看对不对。
2.链接工具乱码
我是用的xshell链接的。 在链接的时候有个地方可以配置默认的编码 当然如果不配配置也可以直接点工具栏的地球改。
3.http请求乱码
此处以spring-boot项目为例 application里面加如下配置
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8
4.java代码乱码
调用getByte方法有时候可能不一样
可以在appilcation里面加个配置file.encoding=utf-8
来对getByte方法进行默认的编码。
来源:oschina
链接:https://my.oschina.net/u/2288185/blog/3175174