欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中properties文件中的中文亂碼問題

 更新時間:2023年08月04日 08:52:36   作者:FangwayLee  
Properties為了方便用戶的配置,用于讀取Java的配置文件,不同的編程語言有自己所支持的配置文件,能讓用戶夠脫離程序本身去修改相關(guān)的變量設(shè)置,這篇文章主要介紹了Java中properties文件中的中文亂碼問題,需要的朋友可以參考下

Properties類是什么?

Properties(Java.util.Properties),該類主要用于讀取Java的配置文件,不同的編程語言有自己所支持的配置文件,配置文件中很多變量是經(jīng)常改變的,為了方便用戶的配置,能讓用戶夠脫離程序本身去修改相關(guān)的變量設(shè)置。就像在Java中,其配置文件常為.properties文件,是以鍵值對的形式進行參數(shù)配置的。

Java中properties文件中的中文亂碼問題

問題代碼:

 // 目標(biāo):使用Properties讀取屬性文件中的內(nèi)容。
         // 1、創(chuàng)建properties對象
          Properties properties = new Properties();
          // 2、使用properties對象加載屬性文件中的鍵值對數(shù)據(jù)。
          properties.load(new FileInputStream("day10-special-file-log\\src\\users.properties"));
          // 3、確認是否讀取出來了
         System.out.println(properties);
         // 4、根據(jù)鍵取值
         String pwd = properties.getProperty("admin");
         System.out.println(pwd);
         properties.forEach((k , v) -> {
             System.out.println(k + "=" + v);
         } );

day10-special-file-log\\src\\users.properties文件里面的內(nèi)容如下:

期望輸出應(yīng)該和上面文件的內(nèi)容一樣,結(jié)果中文內(nèi)容輸出的是一堆亂碼: 1 å¼ æ? å¿?=minmin 2 å?¨è?·è?¥=miejue 3 èµµæ??=wuji 4 admin=123456

可如果將上面properties.load(new FileInputStream("day10-special-file-log\\src\\users.properties"));換成properties.load(new FileReader("day10-special-file-log\\src\\users.properties"));就能正常輸出中文了,那這是什么原因呢?

其實properties文件中的中文亂碼問題主要有以下幾個原因:

1.properties文件的編碼格式和Java代碼的編碼格式不一致。properties文件默認使用ISO-8859-1編碼,而Java代碼可能使用UTF-8或GBK等編碼。這樣在讀取或?qū)懭雙roperties文件時,就會出現(xiàn)中文字符無法正確解析的情況。

2.properties文件中的中文字符沒有經(jīng)過轉(zhuǎn)換。properties文件只能存儲ASCII字符,所以如果要使用中文字符,就需要將其轉(zhuǎn)換為Unicode編碼??梢允褂胣ative2ascii.exe工具或者IDE的插件來實現(xiàn)這個轉(zhuǎn)換。

3.在Java代碼中指定字符集。在使用FileInputStream或FileWriter等類來讀取或?qū)懭雙roperties文件時,需要指定相應(yīng)的字符集,例如UTF-8。可以使用InputStreamReader或OutputStreamWriter等類來包裝FileInputStream或FileWriter,并傳入相應(yīng)的字符集參數(shù)。

而properties.load(new FileReader(file))能正常讀取的原因是,F(xiàn)ileReader默認使用了與properties文件相同的字符編碼,即UTF-8。這樣就可以正確地解析文件中的中文字符,而不會出現(xiàn)亂碼。

可以使用InputStreamReader或OutputStreamWriter等類來包裝FileInputStream或FileWriter,并傳入相應(yīng)的字符集參數(shù)

示例代碼:

// 讀取文件時指定UTF-8編碼
Properties p = new Properties();
p.load(new InputStreamReader(new FileInputStream("config.properties"), "UTF-8"));
// 寫入文件時指定UTF-8編碼
Properties p = new Properties();
p.setProperty("name", "李芳");
p.store(new OutputStreamWriter(new FileOutputStream("config.properties"), "UTF-8"), null);

到此這篇關(guān)于Java中properties文件中的中文亂碼問題的文章就介紹到這了,更多相關(guān)java properties文件中文亂碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot利用@Async異步調(diào)用:ThreadPoolTaskScheduler線程池的優(yōu)雅關(guān)閉詳解

    Spring Boot利用@Async異步調(diào)用:ThreadPoolTaskScheduler線程池的優(yōu)雅關(guān)閉詳解

    這篇文章主要給大家介紹了關(guān)于Spring Boot利用@Async異步調(diào)用:ThreadPoolTaskScheduler線程池的優(yōu)雅關(guān)閉的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • 關(guān)于Intellij IDEA中的Version Control問題

    關(guān)于Intellij IDEA中的Version Control問題

    這篇文章主要介紹了Intellij IDEA中的Version Control問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-11-11
  • Java深入淺出數(shù)組的定義與使用下篇

    Java深入淺出數(shù)組的定義與使用下篇

    數(shù)組是有序的元素序列,若將有限個類型相同的變量的集合命名,那么這個名稱為數(shù)組名。組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時也稱為下標(biāo)變量。數(shù)組是在程序設(shè)計中,為了處理方便,?把具有相同類型的若干元素按有序的形式組織起來的一種形式
    2022-03-03
  • SpringBoot基于過濾器和內(nèi)存實現(xiàn)重復(fù)請求攔截功能

    SpringBoot基于過濾器和內(nèi)存實現(xiàn)重復(fù)請求攔截功能

    這篇文章主要介紹了SpringBoot基于過濾器和內(nèi)存實現(xiàn)重復(fù)請求攔截,這里我們使用過濾器的方式對進入服務(wù)器的請求進行過濾操作,實現(xiàn)對相同客戶端請求同一個接口的過濾,需要的朋友可以參考下
    2023-01-01
  • java多線程開發(fā)ScheduledExecutorService簡化方式

    java多線程開發(fā)ScheduledExecutorService簡化方式

    這篇文章主要為大家介紹了java多線程開發(fā)ScheduledExecutorService的簡化方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • Spring Boot的Controller控制層和頁面

    Spring Boot的Controller控制層和頁面

    這篇文章主要介紹了Spring Boot的Controller控制層和頁面,需要的朋友可以參考下
    2017-04-04
  • Java的Struts框架中<results>標(biāo)簽的使用方法

    Java的Struts框架中<results>標(biāo)簽的使用方法

    這篇文章主要介紹了Java的Struts框架中<results>標(biāo)簽的使用方法,Struts框架是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下
    2015-11-11
  • Spring之異步任務(wù)@Async解讀

    Spring之異步任務(wù)@Async解讀

    這篇文章主要介紹了Spring之異步任務(wù)@Async,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 基于java實現(xiàn)畫圖板功能

    基于java實現(xiàn)畫圖板功能

    這篇文章主要為大家詳細介紹了基于java實現(xiàn)畫圖板功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 基于Java實現(xiàn)Avro文件讀寫功能

    基于Java實現(xiàn)Avro文件讀寫功能

    大家好,本篇文章主要講的是基于Java實現(xiàn)Avro文件讀寫功能,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02

最新評論