Java中乱码问题通常是由于编码不一致或者未正确设置导致的。下面提供一些可能的解决办法:
-
数据库编码设置:确保数据库的编码与Java编码一致。可以通过修改数据库的配置文件,如my.cnf(MySQL)或postgresql.conf(PostgreSQL)来设置编码。将编码设置为UTF-8可以兼容大部分的字符。
-
数据库连接编码设置:在Java代码中,可以使用
useUnicode=true&characterEncoding=utf8
参数来设置JDBC连接的编码,确保与数据库保持一致。 - 后端过滤器设置:在后端代码中,可以使用过滤器来处理请求和响应中的编码。在过滤器中,可以将请求和响应的编码设置为UTF-8。
- Tomcat配置:在Tomcat的配置文件中,可以设置默认的字符编码为UTF-8。
目录
3.后端未设置字符集(UTF-8)(有问题)对应数据库配置,增加过滤器
4.应用服务器:一般指像 tomcat,未设置字符集(UTF-8)(有问题)
1.检查页面输出
2.检查数据库
1.数据库未设置字符集(UTF-8)(有问题)
注意数据库连接编码必须是自动,不然数据库里中文全是??
在Navicat中输入
SELECT @@character_set_server, @@collation_server;
不是UTF-8需要修改
set character_set_database=utf8;
set character_set_server=utf8;
2.前端未设置字符集(UTF-8)(没有问题)
3.后端未设置字符集(UTF-8)(有问题)对应数据库配置,增加过滤器
配置文件中增加字符集配置(数据库8.0以上不需要配置)
使用过滤器将字符集过滤成为utf-8
@WebFilter("/*")
public class EncodingFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进过滤器了");
HttpServletRequest req = (HttpServletRequest) servletRequest;
HttpServletResponse resp = (HttpServletResponse) servletResponse;
//设置编码集,解决中文乱码问题
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("application/json;charset=utf8");
filterChain.doFilter(servletRequest, servletResponse); //请求放行
}
@Override
public void destroy() {
}
}
重要部分是@ 与doFilter方法
@WebFilter("/*")
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("进过滤器了");
HttpServletRequest req = (HttpServletRequest) servletRequest;
HttpServletResponse resp = (HttpServletResponse) servletResponse;
//设置编码集,解决中文乱码问题
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
resp.setContentType("application/json;charset=utf8");
filterChain.doFilter(servletRequest, servletResponse); //请求放行
}
4.应用服务器:一般指像 tomcat,未设置字符集(UTF-8)(有问题)
(1)找到tomcat/conf下的server.xml文件,用记事本打开(注意Tomcat8.0以上版本也不需要配置)
(2)在端口8888的连接配置上增加配置URIEcoding="UTF-8"
(3)刷新就行了