建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

java之学习篇-乱码问题汇总(linux服务器上启动tomcat出现乱码如何解决?)

GG网络技术分享 2025-03-18 16:13 0


java之学习篇-乱码问题汇总

今天突然想到之前的一个项目,是和另一个公司合作,我提供后台,对方写小程序调用我的接口,我本地测试好接口后,是没有问题的,然后部署到对方服务器(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出现乱码如何解决?

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\" ]; then

JAVA_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