本文介紹了與Item Reader一起使用的正確編碼是什么的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我正在使用Spring Batch讀取CSV文件,當(dāng)我用Notepad++打開(kāi)這些文件時(shí),我看到使用的編碼是encode in ANSI
。
現(xiàn)在,當(dāng)從文件中讀取一行時(shí),我注意到所有重音字符都不能正確顯示。例如,我們?nèi)∵@一行:
Données issues de la reprise des données
它被轉(zhuǎn)換成這樣,帶有一些特殊字符:
因此,作為第一個(gè)解決方案,我將Item Reader的編碼設(shè)置為utf-8
,但問(wèn)題仍然存在。
我以為通過(guò)UTF-8
編碼,我所有的重音字符都會(huì)被識(shí)別,不是嗎?據(jù)我所知,例如,UTF-8是處理網(wǎng)頁(yè)上所有字符的最佳編碼嗎?
將我的項(xiàng)目閱讀器編碼設(shè)置為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");
我看不到這些字符現(xiàn)在顯示正確。
作為輸出我應(yīng)該使用utf-8
作為編碼,如果我使用ISO-8859-1
作為編碼輸入,utf-8
作為輸出,這是正確的嗎?
推薦答案
我遇到了同樣的問(wèn)題。輸入文件為ANSI,”ü”在輸出中顯示為正方形。
這是因?yàn)槟妮斎胛募怯肁NSI編碼的,但默認(rèn)情況下,Spring Batch assumes ISO-8859-1 encoding(6.6.2 FlatFileItemReader)。
因此,您必須將閱讀器的編碼設(shè)置為”Cp1252″(setEncoding("Cp1252")
)-that’s how Java refers to ANSI encoding.
此外,您還必須將編寫(xiě)器的編碼設(shè)置為”utf-8″。我不完全確定為什么它不能與其他編碼(通常能夠顯示”ü”,如ISO-8859-1)一起工作,但它與UTF-8一起工作,所以這就是我正在使用的。
這篇關(guān)于與Item Reader一起使用的正確編碼是什么的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,