中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么解決springboot讀取自定義配置文件時出現亂碼問題

發布時間:2021-11-20 09:32:51 來源:億速云 閱讀:398 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么解決springboot讀取自定義配置文件時出現亂碼問題”,在日常操作中,相信很多人在怎么解決springboot讀取自定義配置文件時出現亂碼問題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么解決springboot讀取自定義配置文件時出現亂碼問題”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

package com.example.bean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "book")
@PropertySource("classpath:book.properties")
public class Book {       
    private String name;    
    private String author;    
    private  String price;    
     public Book () {};     
     public Book(String name,String author,String price) {
         this.name = name;
         this.author = author;
         this.price = price;
     }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    };   
}

訪問控制器controller如下:

@Controller
public class BookController {    
    @Autowired
    private Book book;    
    @RequestMapping("/book")
    @ResponseBody
    public String readBook() {
        return "emmmm..... The BookName is "
                    +book.getName()
                    +";and Book Author is "
                    +book.getAuthor()
                    +";and Book price is "
                    +book.getPrice();
    }
}

book的屬性值在配置文件里面給出,我用了自定義配置文件,沒有在application.properties里面配置,那樣的話這個文件太臃腫了。

怎么解決springboot讀取自定義配置文件時出現亂碼問題

當然了文件的編碼肯定是選的UTF-8不要懷疑,

怎么解決springboot讀取自定義配置文件時出現亂碼問題

然而遺憾的是,當我在瀏覽器輸入http://localhost:9090/wow/book訪問時,竟然亂碼了!!!哦shit

怎么解決springboot讀取自定義配置文件時出現亂碼問題

然后就是各種找解決方案,順便也了解到了原因,就是eclipse默認.properties文件的編碼是ISO-8859-1,那么知道了編碼的問題,按照以前的思路來解決亂碼就比較順暢了,

無非是優先指定服務器編碼,這就是方案一,要么指定瀏覽器編碼,然而因為不是jsp訪問所以這個行不通,要么文件編碼指定UTF-8,然而無效。

網上提供的解決方案也不外乎這幾種

方案一

在application里面指定tomcat的編碼:

#設置中文字符的顯示方式
#server.tomcat.uri-encoding=UTF-8  
#spring.http.encoding.charset=UTF-8
#spring.http.encoding.enabled=true
#spring.http.encoding.force=true
#spring.messages.encoding=UTF-8

并無卵用!第一行直接就報錯了!我的JDK1.8,spring boot2.0,可能是版本問題,反正就是報錯不能用。

方案二

各種通過文件編碼指定的,不可用。我eclipse默認指定所有文件編碼是UTF-8,這個文件已經指定,并沒有作用。

方案三

編寫讀取properties文件的類來控制輸出流,特么的這個類在哪里調用?

方案四

嗯,eclipse需要一個讀取properties文件的插件,對的就是插件,下載一個插件據說就能UTF-8輸出了,然而我并不想因為一個文件就去下載一個插件。所以這種方案沒有試。

方案五

據說yml可以輸出中文不亂碼???那還不簡單,換個格式不就完了?

naive!

首先,將book.properties換成book.yml,各種鏈接給出的方案都是在默認配置文件里寫簡直了。。。。。。

然后根據指點,使用@value將屬性注入,各大網站給出的注入位置幾乎都在get set 方法上面,然而,

找不到文件啊衰。。。。依然亂碼啊(′д` )…彡…彡

亂碼:

package com.example.bean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(value = "book")
@PropertySource("classpath:book.yml")
public class BookYml {//仍然是亂碼    
    private String name;    
    private String author;    
    private  String price;
     public BookYml () {};     
     public BookYml(String name,String author,String price) {
         this.name = name;
         this.author = author;
         this.price = price;
     }
     @Value("${book.name}")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Value("${book.author}")
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    @Value("${book.price}")
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    };     
}

嗯,既然仍然是亂碼,說明yml并沒有什么特權。有人說yml也是解析成properties文件運行的,嗯,這個解釋我服。

難道真的只能下載插件了?NONONO不要輕言放棄。更換關鍵字繼續搜索,終于找到了一篇:

終極大法來了:

方案六

package com.example.bean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource(value = "classpath:book.yml", ignoreResourceNotFound = true,encoding = "UTF-8" )
@ConfigurationProperties(prefix = "book")public class Book {
     @Value("${name}")
    private String name;
     @Value("${author}")
    private String author;
     @Value("${price}")
    private  String price;
    
     public Book () {};     
     public Book(String name,String author,String price) {
         this.name = name;
         this.author = author;
         this.price = price;
     }
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    
    public String getPrice() {
        return price;
    }
    public void setPrice(String price) {
        this.price = price;
    };
}

怎么解決springboot讀取自定義配置文件時出現亂碼問題

到此,關于“怎么解決springboot讀取自定義配置文件時出現亂碼問題”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肇源县| 新绛县| 内乡县| 毕节市| 琼中| 怀安县| 仁化县| 梓潼县| 广安市| 渭源县| 广水市| 界首市| 成安县| 咸丰县| 卓资县| 田林县| 疏附县| 宝丰县| 合作市| 明光市| 竹山县| 锡林浩特市| 同江市| 阳江市| 平塘县| 太白县| 喀喇| 克什克腾旗| 汶上县| 井研县| 贵阳市| 聂拉木县| 玉林市| 汝阳县| 牡丹江市| 华安县| 西丰县| 徐汇区| 精河县| 阿拉尔市| 兴仁县|