Products
GG网络技术分享 2025-03-18 16:13 0
今天突然想到之前的一个项目,是和另一个公司合作,我提供后台,对方写小程序调用我的接口,我本地测试好接口后,是没有问题的,然后部署到对方服务器(windows系统),接着就是出先各种各样的乱码问题,在这里汇总记录下,以便后面学习。
java乱码出现的问题有很多,这里主要记录下tomcat,log4j,mysql,jsp,html,http(get,post请求乱码处理)。常见的问题可能是tomcat,http请求乱码问题了,至于jsp和html的乱码问题就很简单了,相信大家也知道,我也就不多说了,首先来说下tomcat的乱码问题,
一个是程序需要发送http GET请求到服务器,请求的参数中包含了中文字符。程序中参数为UTF-8格式,且经过了UTF-8 URL编码再发送。使用的tomcat服务器,但服务器端后台程序中取到的参数的中文是乱码。
解决办法:修改Tomcat的Server.xml,在Connector标签中加上URLEncoding参数。
<Connector port=\"8080\" maxThreads=\"150\" minSpareThreads=\"25\"
maxSpareThreads=\"75\" enableLookups=\"false\" redirectPort=\"8443\"
acceptCount=\"100\" debug=\"99\" connectionTimeout=\"20000\"
disableUploadTimeout=\"true\" URIEncoding=\"UTF-8\"/>
另一个是tomcat控制台打印乱码,程序中输出到tomcat控制台的中文信息乱码了,
解决办法:打开文件/tomcat/bin/catalina.bat,然后设置set JAVA_OPTS= 的内容中添加选项-Dfile.encoding=UTF-8即可,当然,我不敢包证,但是我的就是这么处理然后就可以了。
然后是log4j的日志打印乱码,这个乱码也是打印在tomcat控制台的时候乱码,但是日志文件却不会,而且我本地测试的时候打印也不会乱码
而且我配置的也是utf-8,这个曾经让我恼火好久,后面我偶然在一篇博客上发现,说有些服务器你配utf-8是不行的,他的是编码就是GBK,我就权当试试,没想到还真是这个问题,这也是让我很无语,,,,
然后就是http请求的乱码,我这个乱码问题是我在shiro判断是否登录的时候,因为我是前后端分离,所以我shiro判断未登录的时候,是返回状态码和提示信息,而不是跳转登录页面,我用response返回中文提示信息是,结果返回的是乱码,可是我明明设置了
res.setCharacterEncoding(\"utf-8\");
可是到前端页面的时候还是乱码了,这让我很费解,后面我仔细想了下,我服务端是设置了返回utf-8的编码,但是浏览器是用utf-8去解析的吗?后面去查了下还要加一条配置,
res.setContentType(\"text/html;charset=utf-8\");
之前知道有这个配置,但是一直不知道有什么区别,今天算是明白了一点,这个就是告诉浏览器,你要用什么编码去解析这个数据。
最后一个是mysql 中文的乱码了,这个着实让我烦恼了好久,我去网上查了,说建表的时候要设置utf-8的编码,可是我在新建数据库的时候就设置了默认就是utf-8的编码,然后我说要配置数据库的默认编码,修改mysql配置文件/etc/my.cnf。
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
我设置好这个以后,终于不会乱了,但是,,保存进去的中文居然全部变成了???号,于是又去奔波了,
通过这个命令,我们可以看到,我们服务端居然还不是utf-8???
这让我很伤,终于,寻的良方,
只要在数据库properties文件的连接信息里加两个参数
?useUnicode=true&characterEncoding=utf-8
就可以了,唉,真是一波三折啊,
真是与服务器斗,其乐无穷;与数据库斗,其乐无穷;与浏览器斗,其乐无穷啊
linux服务器上启动tomcat出现乱码如何解决?
1、保证linux服务器使用的是utf-8
local -a //查看支持的字体
vi /etc/sysconfig/i18n
修改为
zh_CN.UTF-8
2、客户端软件Xshell、putty、SSH Secure Shell Client 等客户端编码改为utf-8
3、修改server.xml文件编码为utf-8
URIEncoding=\"UTF-8\"
4、修改catalina.sh文件
if [ -z \"$LOGGING_MANAGER\" ]; thenJAVA_OPTS=\"$JAVA_OPTS -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Dfile.encoding=UTF8
-Dsun.jnu.encoding=UTF8\"
else
JAVA_OPTS=\"$JAVA_OPTS $LOGGING_MANAGER -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8\"
fi
以上就是linux服务器上启动tomcat出现乱码解决方法的详细内容。
Demand feedback