本文介紹了與Item Reader一起使用的正確編碼是什么的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在使用Spring Batch讀取CSV文件,當我用Notepad++打開這些文件時,我看到使用的編碼是encode in ANSI。
現在,當從文件中讀取一行時,我注意到所有重音字符都不能正確顯示。例如,我們取這一行:
Données issues de la reprise des données
它被轉換成這樣,帶有一些特殊字符:
因此,作為第一個解決方案,我將Item Reader的編碼設置為utf-8,但問題仍然存在。
我以為通過UTF-8編碼,我所有的重音字符都會被識別,不是嗎?據我所知,例如,UTF-8是處理網頁上所有字符的最佳編碼嗎?
將我的項目閱讀器編碼設置為ISO-8859-1之后:
public class TestItemReader extends FlatFileItemReader<TestFileRow> {
private static final Logger log = LoggerFactory.getLogger(TestItemReader.class);
public ScelleItemReader(String path) {
this.setResource( new FileSystemResource(path + "/Test.csv"));
this.setEncoding("ISO-8859-1");
我看不到這些字符現在顯示正確。
作為輸出我應該使用utf-8作為編碼,如果我使用ISO-8859-1作為編碼輸入,utf-8作為輸出,這是正確的嗎?
推薦答案
我遇到了同樣的問題。輸入文件為ANSI,”ü”在輸出中顯示為正方形。
這是因為您的輸入文件是用ANSI編碼的,但默認情況下,Spring Batch assumes ISO-8859-1 encoding(6.6.2 FlatFileItemReader)。
因此,您必須將閱讀器的編碼設置為”Cp1252″(setEncoding("Cp1252"))-that’s how Java refers to ANSI encoding.
此外,您還必須將編寫器的編碼設置為”utf-8″。我不完全確定為什么它不能與其他編碼(通常能夠顯示”ü”,如ISO-8859-1)一起工作,但它與UTF-8一起工作,所以這就是我正在使用的。
這篇關于與Item Reader一起使用的正確編碼是什么的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,






