国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

IntelliJ IDEA 統一設置編碼為utf-8編碼 及 SpringBoot 打 jar 包運行 在windows 平臺控制臺和日志 亂碼解決

這篇具有很好參考價值的文章主要介紹了IntelliJ IDEA 統一設置編碼為utf-8編碼 及 SpringBoot 打 jar 包運行 在windows 平臺控制臺和日志 亂碼解決。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、背景

最新在做小程序支付項目,在本地環(huán)境和linux 環(huán)境部署上運行沒有問題,但是部署到window 環(huán)境,請求易通支付接口時,對方返回

Try again later!io.vertx.core.json.Json.decodeValue(Json.java:168)
意思是 編碼格式出錯,對方技術人員也說大概率是編碼的問題,需要UTF-8。

所以打算抽出一下午的時間徹底搞懂 “中文亂碼”。

二、知識準備

  • ANSI,unicode與utf-8的區(qū)別
    使計算機支持更多語言,通常使用 0x80~0xFFFF 范圍的 2 個 字節(jié)來表示 1 個字符。比如:漢字 ‘中’ 在 ANSI編碼 ANSI編碼 中文操作系統中,使用 [0xD6,0xD0] 這兩個字節(jié)存儲。
    不同的國家和地區(qū)制定了不同的標準,由此產生了 GB2312、GBK、GB18030、Big5、Shift_JIS 等各自的編碼標準。這些使用多個字節(jié)來代表一個字符的各種漢字延伸編碼方式,稱為 ANSI 編碼。在簡體中文Windows操作系統中,ANSI 編碼代表 GBK 編碼;在繁體中文Windows操作系統中,ANSI編碼代表Big5;在日文Windows操作系統中,ANSI 編碼代表 Shift_JIS 編碼。
    不同 ANSI 編碼之間互不兼容,當信息在國際間交流時,無法將屬于兩種語言的文字,存儲在同一段 ANSI 編碼的文本中。
  1. 中文操作系統默認ansi編碼
  2. unicode是國際通用編碼
  3. utf-8編碼是unicode編碼在網絡之間(主要是網頁)傳輸時的一種“變通”和“橋梁”編碼。utf-8在網絡之間傳輸時可以節(jié)約數據量。

三、程序運行源代碼歷經處理階段

一份代碼到運行得到正確輸出,經過步驟:

Java源代碼----Javac編譯成class字節(jié)碼文件----Java虛擬機JVM加載運行—操作系統----顯示設備。

Java源碼—字節(jié)碼:調用jdk的javac命令執(zhí)行編譯,javac默認采用系統字符集。通常我們會設置文件編碼UTF-8。使用命令編譯也可以加上-encoding UTF-8;

System.getProperty("file.encoding")   //可以獲取當前系統使用的編碼字符集

Java字節(jié)碼—虛擬機—操作系統:虛擬機啟動的時候以什么字符集編碼來解析我們的class字節(jié)碼文件呢?這時候我們就通常會設置 -Dfile.encoding=utf-8 這里也就解釋了設置這個VM參數的意義了。

操作系統—顯示設備:針對編碼階段出現的中文,在這一步驟就需要操作系統安裝中文字體以支持中文。

四、問題描述

我們在Windows下運行jar包時,常常會出現亂碼,主要分為dos窗口輸出的日志中出現亂碼和程序返回數據出現亂碼。

  • dos窗口輸出的日志中出現亂碼
    執(zhí)行如下命令,將控制臺輸出編碼改為UTF8:
chcp 65001
  • 程序返回數據出現亂碼
    執(zhí)行如下命令,運行jar包時指定編碼為UTF8:
java -Dfile.encoding=utf-8 -jar xxx.jar

五、解決方法

1.修改項目編碼格式統一為UTF-8

Setting>>Editor>>File Encoding
啟動jar包指定編碼,運維部署,開發(fā)工具,intellij-idea,jar,java

2.將項目中的.idea文件夾中的encodings.xml文件中的編碼格式改為uft-8

啟動jar包指定編碼,運維部署,開發(fā)工具,intellij-idea,jar,java

3.File->Settings->Build,Execution,Deployment -> Compiler -> Java Compiler

設置 Additional command line parameters選項為 -encoding utf-8
啟動jar包指定編碼,運維部署,開發(fā)工具,intellij-idea,jar,java

4.然后在 Server > VM options 設置為 -Dfile.encoding=UTF-8

啟動jar包指定編碼,運維部署,開發(fā)工具,intellij-idea,jar,java

5. SpringBoot yml 里配置 servlet 和tomcat 編碼

server:
  port: 8082
  servlet:
    context-path: /api
    encoding:
      charset: UTF-8
  tomcat:
    uri-encoding: UTF-8

6. SpringBoot logback-config.xml 里面配置日志編碼UTF-8

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 日志存放路徑 -->
    <springProperty scope="context" name="log.path" source="logging.file.path"/>
    <!-- 日志輸出格式 -->
	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
    <property name="log.charset" value="UTF-8"/>
	<!-- 控制臺輸出 -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>${log.pattern}</pattern>
            <charset>${log.charset}</charset>
		</encoder>
	</appender>

	<!-- 系統日志輸出 -->
	<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/sys-info.log</file>
        <!-- 循環(huán)政策:基于時間創(chuàng)建日志文件 -->
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
			<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的歷史 60-->
			<maxHistory>60</maxHistory>
		</rollingPolicy>
		<encoder>
			<pattern>${log.pattern}</pattern>
            <charset>${log.charset}</charset>
		</encoder>
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>INFO</level>
            <!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
	</appender>

	<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
	    <file>${log.path}/sys-error.log</file>
        <!-- 循環(huán)政策:基于時間創(chuàng)建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
			<!-- 日志最大的歷史 60-->
			<maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
            <charset>${log.charset}</charset>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 過濾的級別 -->
            <level>ERROR</level>
			<!-- 匹配時的操作:接收(記錄) -->
            <onMatch>ACCEPT</onMatch>
			<!-- 不匹配時的操作:拒絕(不記錄) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

	<!-- 用戶訪問日志輸出  -->
    <appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.path}/sys-user.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 按天回滾 daily -->
            <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志最大的歷史 60-->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
            <charset>${log.charset}</charset>
        </encoder>
    </appender>

	<!-- 系統模塊日志級別控制  -->
	<logger name="com.ruoyi" level="info" />
	<!-- Spring日志級別控制  -->
	<logger name="org.springframework" level="warn" />

	<!--系統操作日志-->
    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="file_info" />
        <appender-ref ref="file_error" />
    </root>

	<!--系統用戶操作日志-->
    <logger name="sys-user" level="info">
        <appender-ref ref="sys-user"/>
    </logger>
</configuration>

7. java -jar xxx 命令里面添加UTF-8 編碼

java -Dfile.encoding=UTF-8 -jar xxxx.jar

window 下完整的執(zhí)行腳本:文章來源地址http://www.zghlxwxcb.cn/news/detail-557992.html

@echo off
chcp 65001
java -Dfile.encoding=UTF-8 -jar ./api.jar 

到了這里,關于IntelliJ IDEA 統一設置編碼為utf-8編碼 及 SpringBoot 打 jar 包運行 在windows 平臺控制臺和日志 亂碼解決的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • IntelliJ IDEA中生成jar包并運行

    IntelliJ IDEA中生成jar包并運行

    依次選擇菜單:File-Project Structure…,打開“Project Structure”界面。 在打開界面的左側列表中選擇:Artifacts,點擊右側出現的+號。 在出現的菜單中依次選擇:JAR-From modules with dependencies…, 打開“Create JAR from Modules”界面。 在Main Class輸入框中輸入main方法所在類的完整包名+類

    2024年02月13日
    瀏覽(21)
  • 【IntelliJ IDEA】編碼設置終極版

    【IntelliJ IDEA】編碼設置終極版

    近期,團隊多個小伙伴咨詢 IntelliJ IDEA 亂碼問題,記錄一下IDEA常用的4種編碼設置。 IDEA的配置有兩個范圍,如下圖: Settings ...... 設置當前工程配置 New Projects Settings | Settings for New Projects... 設置新創(chuàng)建工程配置 Tips: 很多小伙伴是因為沒有設置 New Projects Settings ,在新導入或

    2024年02月03日
    瀏覽(20)
  • 怎么修改IntelliJ IDEA的運行內存,Idea怎么設置運行內存

    怎么修改IntelliJ IDEA的運行內存,Idea怎么設置運行內存

    idea不該在默認的小小空間內憋屈,運行起來也會卡,這里建議提整一下大運行內存,最大內存不是運行idea就真用了這么多,而是idea最大可以用這么多運行內存,接下來是設置的步驟。 ? Edit Custom?VM Options... ? 如果是4g內存的,可以改為128和2048,8g的推薦設置128和4096,我的電

    2024年02月15日
    瀏覽(25)
  • IntelliJ IDEA運行SpringBoot項目,手把手教你運行

    IntelliJ IDEA運行SpringBoot項目,手把手教你運行

    IDEA JDK1.8 MySQL8.0 Maven 一:配置maven 第一步 :用IDEA打開項目,開始配置maven環(huán)境 ,如果本地沒有提前配置好maven,就用IDEA默認的配置即可 第二步:配置maven步驟 出現情況1 :如果本地沒有配置過maven,可以保持如下默認配置 (未配置直接忽略出現情況2) 出現情況2 :如果本地

    2024年02月09日
    瀏覽(34)
  • 設置Tomcat字符編碼UTF-8

    設置Tomcat字符編碼UTF-8

    我這里是Tomcat7,標簽大概在70行左右

    2024年02月16日
    瀏覽(22)
  • Pycharm 中文亂碼解決,統一設置 UTF-8,再也不會亂碼了

    Pycharm 中文亂碼解決,統一設置 UTF-8,再也不會亂碼了

    當我們在使用pycharm編寫代碼的時候,為了避免亂碼問題,我們統一用utf-8編碼。由于Python源代碼也是一個文本文件,所以當你的源代碼包含中文的時候,在保存源代碼的時候就務必指定保存為UTF-8編碼。 但是有很的多的小伙伴還不知道如何進行設置,下面一起來看看詳細的

    2024年02月12日
    瀏覽(30)
  • 解決終Linux端中文亂碼問題及設置UTF-8編碼

    簡介 當在終端中復制粘貼中文文本時出現亂碼問題,可能是因為終端未正確設置 UTF-8 編碼。本文將介紹如何通過設置語言環(huán)境和字符類型環(huán)境,以及選擇正確的語言包,來解決這一問題。 步驟: 1. 檢查當前終端設置 在終端中運行以下命令,檢查當前終端的語言環(huán)境和字符

    2024年02月05日
    瀏覽(27)
  • Windows下CMD和Tomcat設置編碼為UTF-8

    由于日常編寫代碼,都是使用UTF-8編碼,而CMD默認是GBK編碼,導致執(zhí)行mvn命令時,出現中文亂碼問題,而 chcp 命令只在當次打開有效,每次打開都要重新切換代碼頁十分不便。 對于CMD,可以通過修改注冊表的方式,永久修改默認代碼頁。打開注冊表編輯器,定位到 HKEY_CURRE

    2024年03月09日
    瀏覽(15)
  • VS2022設置編碼方式為utf-8的三種方式

    VS2022設置編碼方式為utf-8的三種方式

    此方法同樣適用Visual Studio的其他版本 在字符串前面使用 u8 ,可保證解析時安裝utf-8的方式解析 安裝插件:Force UTF-8 更改VS的編碼方案 首先需要打開高級保存選項 然后打開 文件 — 高級保存選項 即可進行設置 參考鏈接: 探究Visual Studio中的亂碼問題 - CSDN

    2024年02月11日
    瀏覽(28)
  • Redis如何把字符集的編碼格式設置為UTF-8

    Redis如何把字符集的編碼格式設置為UTF-8

    一、問題復現(編碼錯亂) ? ? ? ? 剛安裝好的redis在使用的過程中,若使用到了漢字,則在顯示的時候,漢字是不能夠正常顯示的,因為redis在解析的過程中,會將漢字轉換成其他編碼的格式,如下圖: 二、Redis支持哪些類型的編碼? ????????Redis是一款開源的內存數據

    2024年02月02日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包