簡體   English   中英

匕首輸出Java(char)134不起作用cp1252

[英]dagger output java (char)134 doesnt work cp1252

通常,我的程序應將所有CP1252代碼以char形式輸出:

System.out.println("actual file.encoding: "+System.getProperty("file.encoding")); // CP1252


for (int i = 0; i < 500; i++) {
    System.out.println("Nr.: "+i+ " Symbol: "+(char)i");
}

但是輸出是:(整個輸出的片段!)

Nr.: 124 Symbol: |
Nr.: 125 Symbol: }
Nr.: 126 Symbol: ~
Nr.: 127 Symbol: 
Nr.: 128 Symbol: ?
Nr.: 129 Symbol: ?
Nr.: 130 Symbol: ?
Nr.: 131 Symbol: ?
Nr.: 132 Symbol: ?
Nr.: 133 Symbol: ?
Nr.: 134 Symbol: ?
Nr.: 135 Symbol: ?

但是在https://en.wikipedia.org/wiki/Windows-1252中 ,寫成134是:†

為什么不顯示†?

CP1252中的字節值134(或0x86)確實是匕首,但Java中的char始終為UTF-16(Unicode),而在UTF-16中, char始終為非圖形字符U + 0080-U + 00FF(整數代碼點128-159)而U + 2020是與CP1252字節0x86對應的字符。

使用System.out.write(/*int 0-255 only*/i)輸出已編碼的byte 或者在這種情況下不太方便,但在其他情況下更可取,請將字節放入數組byte[]並使用System.out.write(byte[])

啊,現在可以用了...有人知道這里涉及哪些字符集嗎? 我稍后會發現,但現在卻令人困惑。 謝謝:它適用於Unicode U + 2020(十六進制),它對應於8224:

fW.write("Omg it writes † : ");
        fW.write(13);
        fW.write(10);
        fW.write(0x2020);
        fW.write(8224);
        fW.write(13);
        fW.write(10);

輸出:

    Begin:
Omg it writes † : 
††

暫無
暫無

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

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