• spingboot项目在windows环境中运行时接收参数及日志中文乱码


    1.logback.xml配置

      appender中添加 <param name="Encoding" value="UTF-8" />

    <configuration debug="false">
        <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
        <property name="LOG_HOME" value="D:\logs" />
        <!-- 控制台输出 -->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <param name="Encoding" value="UTF-8" /> 
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{100} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <!-- 按照每天生成日志文件 -->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <param name="Encoding" value="UTF-8" />
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <!--日志文件输出的文件名-->
                <FileNamePattern>${LOG_HOME}/bigdata-%d{yyyy-MM-dd}.log</FileNamePattern>
                <!--日志文件保留天数-->
                <MaxHistory>60</MaxHistory>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{50} - %msg%n</pattern>
            </encoder>
            <!--日志文件最大的大小-->
            <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                <MaxFileSize>10MB</MaxFileSize>
            </triggeringPolicy>
        </appender>
        
        <!-- 日志输出级别 -->
        <root level="INFO">
            <appender-ref ref="STDOUT" />
            <appender-ref ref="FILE" />
        </root>
        
    </configuration>

    2.接收请求参数中文乱码

      启动jar包时添加命令 -Dfile.encoding=utf-8

    java -Dfile.encoding=utf-8 -jar .my.jar

    3.日志输出乱码

      添加-Dfile.encoding=utf-8命令之后,参数接收正常,但是由于指定的编码与windows系统默认编码不符,此时将会出现日志输出乱码

      需要将系统默认编码改为utf-8

      cmd命令窗口在启动jar包之前增加命令 chcp 65001

    chcp 65001

    4.避免每次启动都要重复这些命令,可以写一个启动脚本将两个命令合并,新建txt文件复制如下命令保存后修改文件后缀为.bat

    chcp 65001
    java -Dfile.encoding=utf-8 -jar .my.jar
  • 相关阅读:
    剑指Offer——矩形覆盖
    剑指Offer——变态跳台阶
    ASCII table and description .
    字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别) .
    tchar 输入输出类 和 string 类 函数简单说明 总结各种前缀后缀
    各种 C++编译器的性能对比
    怎样写参数个数可变的宏 Debug宏 Log宏等
    C语言中的可变参数函数 三个点“…”printf( const char* format, ...)
    常用C语言字符串操作函数
    Multi-Byte Character Set &amp; Use Unicode Character Set .
  • 原文地址:https://www.cnblogs.com/LiQ0116/p/11951628.html
Copyright © 2020-2023  润新知