第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

UTF-8 不適用于 Java zipOutputStream

UTF-8 不適用于 Java zipOutputStream

動(dòng)漫人物 2022-05-25 10:13:17
我正在使用 .csv 生成一個(gè)包含 csv 的 zip 文件ZipOutputStream。我已經(jīng)通過了編碼 UTF-8 但問題是德語變音符號(hào)沒有正確壓縮。未壓縮時(shí),它們不會(huì)正確顯示在文件中。我不確定問題是壓縮本身還是解壓縮。與此問題相關(guān)的所有主題主要是關(guān)于文件名中的特殊字符,但對(duì)我而言,問題出現(xiàn)在數(shù)據(jù)中。   val zos = ZipOutputStream (outputStream, StandardCharsets.UTF_8)        val entry = ZipEntry("file1.csv")        zos.putNextEntry(entry)        val writer = CsvWriter(zos)        for (entr in data)            writer.appendRow {entr.forEach { write(it) }}        zos.closeEntry()    zos.close()
查看完整描述

2 回答

?
喵喵時(shí)光機(jī)

TA貢獻(xiàn)1846條經(jīng)驗(yàn) 獲得超7個(gè)贊

我認(rèn)為您的示例不正確,因?yàn)槟鷮?aZipOutputStream直接傳遞給CsvWriter. 假設(shè)您使用的是 OpenCSV,則CsvWriter構(gòu)造函數(shù)需要 a Writer,而不是OutputStream.

在 Java 中,I/O 流要么是字節(jié)流,要么是原始數(shù)據(jù);或字符流,由 Unicode 字符組成。為了從一個(gè)轉(zhuǎn)換到另一個(gè),您必須提供一個(gè)字符編碼,它告訴它如何將字符轉(zhuǎn)換為字節(jié)/從字節(jié)轉(zhuǎn)換。(如果你不提供,那么 Java 將使用默認(rèn)的字符編碼——這取決于平臺(tái),但通常是 UTF-8。)InputStream并且OutputStream是字節(jié)流,而相應(yīng)的字符流稱為ReaderWriter。

你有一個(gè)ZipOutputStream,它是一個(gè)字節(jié)流。OpenCSVCsvWriter構(gòu)造函數(shù)需要一個(gè)Writer, 一個(gè)字符流,這是有意義的,因?yàn)?CSV 是一種文本格式。(我想這對(duì)其他CsvWriter實(shí)現(xiàn)也是如此。)您應(yīng)該將您的實(shí)例包裝ZipOutputStream在 的實(shí)例中OutputStreamWriter,這會(huì)將 CSV 字符轉(zhuǎn)換為字節(jié)。OutputStreamWriter您可以在構(gòu)造函數(shù)中指定字符編碼。


查看完整回答
反對(duì) 回復(fù) 2022-05-25
?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊

從文檔:

charset - 用于對(duì)條目名稱和注釋進(jìn)行編碼的字符集

因此,設(shè)置 UTF-8 對(duì)已經(jīng)必須是字節(jié)流的內(nèi)容沒有任何影響。

問題必須發(fā)生在CsvWriter.


查看完整回答
反對(duì) 回復(fù) 2022-05-25
  • 2 回答
  • 0 關(guān)注
  • 325 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)