Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 405|回复: 0

idea ssm项目出现日志中文乱码,封装的json中的msg字段中文乱码(但是json封装的bean中的字段不乱码)等其他各种项目下的中文乱码解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-8-27 14:55:21 | 显示全部楼层 |阅读模式

     

     开头划重点!(敲黑板):rebuild和mvn package的循环往复好几次的操作是解决这个问题的最主要的方法!

    经过多次试验,发现这样做就可以正常显示中文了

    我说为什么有时候乱码,有时候中文正常,原来下面的这些地方都必须设置好,特别是 rebuild和mvn package的循环往复好几次的操作

    测试发现,一般情况下,先更新maven依赖,然后build 1一次,rebuild 一次,mvn package一次,rebuild 一次,mvn package一次,一般这样操作就成功了,

    如果这样还没成功,那就多循环往复几次,一般就行了,可以一个周期(也就是一个 rebuild+mvn package)看一次效果,不行就加一个周期,这样来。

    首先,在项目原有的基础上加上

     

    <!-- 新加了此行用于解决中文编码问题,然后项目本身编码必须设置为全用utf-8(在setting中设置,得把项目加进去,然后修改,修改时也选utf-8),然后打包war时多rebuild几次,项目内整体所有地方就都不会出现中文乱码问题了,不管是msg字段还是日志等都不会出现中文乱码问题了,原因至今未找到 -->
                                <!-- 更新一下maven依赖,然后右击项目,先build一次,然后再rebuild一次,然后再用windows资源管理器,进入项目目录,
    mvn package一次,然后再rebuild一次,然后再mvn package一次,这样 rebuild和mvn package循环往复好几次,这样才能解决中文编码问题,
    这是个bug,不过终于用这种奇技淫巧实现了,网上都找不到这样的方法,完全是因为偶然的多rebuild和mvn package几次时,看出了解决中文编码乱码后的不乱码的效果,
    才发现这样能解决中文编码问题的,可能是rebuild项目和mvn package时出现了一些文件上的影响到字符编码的因素,导致只有往复循环执行上面说的操作好几次,才能够在rebuild和mvn package 构建打包项目时正确的把支持中文编码的代码构建上去,可能是这个原因。 --> <value>application/json;charset=UTF-8</value>

     

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
            http://www.springframework.org/schema/mvc
            http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-4.1.xsd
            http://www.springframework.org/schema/aop
            http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx-4.1.xsd ">
    
    
        <!-- springmvc的配置文件,包含网站跳转逻辑的控制、配置 -->
        <!-- 组件扫描的方式加载Handler -->
        <context:component-scan
                base-package="org.kinome" use-default-filters="true">
            <!-- 只扫描控制器 其他不扫 -->
            <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:include-filter>
        </context:component-scan>
    
    
        <!-- 视图解析器 -->
        <!--<bean-->
                <!--class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
            <!--<property name="prefix" value="/WEB-INF/views/"></property>-->
            <!--<property name="suffix" value=".jsp"></property>-->
        <!--</bean>-->
    
        <!-- 视图解析器 必须要开 否则使用 ModelAndView 时无法找到jsp路径位置 这里只开视图解析器 不使用上面那个视图解析器的配置就行了 -->
        <bean
                class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
    
    
        <!-- 两个标准配置 -->
        <!-- 将springmvc不能处理的请求交给tomcat 实现动态资源和静态资源都能处理 -->
        <mvc:default-servlet-handler></mvc:default-servlet-handler>
    
        <!-- 使用消息转换器转换编码方式 因为spring的某个类在处理返回json时编码指定为iso-xxx了,所以会出现中文乱码,需要进行编码转换 -->
        <!-- 需要把这个bean放在 <mvc:annotation-driven/> 之前(上面),否则不会生效 -->
        <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
            <property name="messageConverters">
                <list>
                    <!-- 因为优先级的问题 需要把 ByteArray 加在 json的前面,否则返回的文件会损坏
                   参考:https://blog.csdn.net/u013555226/article/details/77026068
                    http://www.iteye.com/topic/1125784
                    -->
                    <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
                    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
                    <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                        <property name="supportedMediaTypes">
                            <list>
                                <value>text/plain;charset=utf-8</value>
                                <value>text/html;charset=UTF-8</value>
                                <!-- 新加了此行用于解决中文编码问题,然后项目本身编码必须设置为全用utf-8(在setting中设置,得把项目加进去,然后修改,修改时也选utf-8),然后打包war时多rebuild几次,项目内整体所有地方就都不会出现中文乱码问题了,不管是msg字段还是日志等都不会出现中文乱码问题了,原因至今未找到 -->
                                <!-- 更新一下maven依赖,然后右击项目,先build一次,然后再rebuild一次,然后再用windows资源管理器,进入项目目录,
    mvn package一次,然后再rebuild一次,然后再mvn package一次,这样 rebuild和mvn package循环往复好几次,这样才能解决中文编码问题,
    这是个bug,不过终于用这种奇技淫巧实现了,网上都找不到这样的方法,完全是因为偶然的多rebuild和mvn package几次时,看出了解决中文编码乱码后的不乱码的效果,
    才发现这样能解决中文编码问题的,可能是rebuild项目和mvn package时出现了一些文件上的影响到字符编码的因素,导致只有往复循环执行上面说的操作好几次,才能够在rebuild和mvn package 构建打包项目时正确的把支持中文编码的代码构建上去,可能是这个原因。
     -->
                                <value>application/json;charset=UTF-8</value>
                            </list>
                        </property>
                    </bean>
                </list>
            </property>
        </bean>
    
        <!-- 支持springmvc一些更加高级的功能 比如 jsr303校验 快捷的ajax请求 映射动态请求 xxx -->
        <mvc:annotation-driven/>
    
        <!-- location元素表示web目录下的static包下的所有文件;
             mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b;
             该配置的作用是:DispatcherServlet不会拦截以/static开头的所有请求路径,并当作静态资源
             交由Servlet处理 -->
        <mvc:resources mapping="/static/**" location="/static/"/>
    
    
        <!--导入文件上传配置-->
        <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"/>
        <!-- 指定所上传文件的总大小不能超过10MB 10240KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
        <property name="maxUploadSize" value="10240000"/>
        </bean>
        <!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException -->
        <!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->
        <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
        <props>
        <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到 /views/errorPage/fileSizeIsTooLarge.jsp 页面 -->
        <prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">
            /views/errorPage/fileSizeIsTooLarge.jsp
        </prop>
        </props>
        </property>
        </bean>
    
    
    </beans>

     

     

     

     

     

    然后,把项目本体字符全部设置为utf-8:

    注意:这里需要+一个项目,然后点击修改来修改它的编码

     

    这里需要把项目加进去后再修改,修改后idea的配置文件也会更新,这里用git看到更新了

    这个settings是分项目的,也就是说不同的项目设置是不同的,所以这里只有它自己,另一个项目是看不到这个设置路径的

     

     

     

    然后,关键来了!

    重点是: 我的是idea的maven的ssm项目,我发现项目在需要打包时,必须先

    更新一下maven依赖,然后右击项目,先build一次,然后再rebuild一次,然后再用windows资源管理器,进入项目目录,

    mvn package一次,然后再rebuild一次,然后再mvn package一次,这样 rebuild和mvn package循环往复好几次,这样才能解决中文编码问题,

    这是个bug,不过终于用这种奇技淫巧实现了,网上都找不到这样的方法,完全是因为偶然的多rebuild和mvn package几次时,看出了解决中文编码乱码后的不乱码的效果,

    才发现这样能解决中文编码问题的,可能是rebuild项目和mvn package时出现了一些文件上的影响到字符编码的因素,导致只有往复循环执行上面说的操作好几次,才能够在rebuild和mvn package 构建打包项目时正确的把支持中文编码的代码构建上去,可能是这个原因。

    下面是成功实现的效果:

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-23 09:19 , Processed in 0.102263 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表