Java数据乱码(中文显示为不知名符号)(数据库+后端过滤+Tomcat配置)

 Java中乱码问题通常是由于编码不一致或者未正确设置导致的。下面提供一些可能的解决办法:

  1. 数据库编码设置:确保数据库的编码与Java编码一致。可以通过修改数据库的配置文件,如my.cnf(MySQL)或postgresql.conf(PostgreSQL)来设置编码。将编码设置为UTF-8可以兼容大部分的字符。

  2. 数据库连接编码设置:在Java代码中,可以使用useUnicode=true&characterEncoding=utf8参数来设置JDBC连接的编码,确保与数据库保持一致。

  3. 后端过滤器设置:在后端代码中,可以使用过滤器来处理请求和响应中的编码。在过滤器中,可以将请求和响应的编码设置为UTF-8。
  4. Tomcat配置:在Tomcat的配置文件中,可以设置默认的字符编码为UTF-8。

 

目录

1.检查页面输出

2.检查数据库

1.数据库未设置字符集(UTF-8)(有问题)

2.前端未设置字符集(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)刷新就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值