簡體   English   中英

Java將文件編寫為純“ windows-1252”

[英]Java writing a file as pure “windows-1252”

我有以下十進制ASCII值數組

int[] istr={146,192,128,224,185,152,240,192,6,26,66,72,186,184,88,128,182,40,104,96,36,236,152,128,212,200,64,64,101,252,174,0,96,192,112,24,173,228,200,0,192,128,96,192,144,116,201,48};

我想將這些值作為(ASCII / Windows-1252)字符寫入文件中。

HOW IT SHOULD LOOK LIKE:    ’À€à¹˜ðÀBHº¸X€¶(h`$였ÔÈ@@eü®
MY OUTPUT:                  ?À?à¹?ðÀBHº¸X?¶(h`$ì??ÔÈ@@eü®

如您所見,輸出中有些字符不會像我期望的那樣出現在文件中。 寫入我的文件的代碼:

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(output),"windows-1252");
    try {
        for (int c : istr) {
            out.write(c);
        }
    } finally {
        out.close();
    }

那么,為什么某些特殊字符未正確寫入我的文件?

調用Writer.write(int) ,是要提供Unicode值。

例如,以您的第一個字符為例,您已經有了Unicode 146,又名U + 0092。 查看U + 0080到U + 00FFUnicode圖表 ,這是“私人使用2”字符。 目前尚不清楚為什么您期望它以撇號出現。

如果您有要在文件中結尾的確切字節,則完全不應該使用Writer ,而應該使用OutputStream

outputstream是抽象類。 那么如何使用寫功能? 將漢字寫入excel文件時遇到類似的麻煩。 我以與提到的代碼非常相似的方式構建了代碼。 和OutputStreamWriter的接口= new OutputStreamWriter(new FileOutputStream(output),“ utf-8”); 我用= new OutputStream(new FileOutputStream(output),“ utf = 8”);

我能夠用此修改構建代碼,但是excel中的值仍然很亂

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM