0

通常我的程序应该将所有 CP1252 代码作为字符输出:

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 是:†</p>

为什么不显示 † ?

4

2 回答 2

1

CP1252 中的字节值 134(或 0x86)确实是匕首,但char在 Java 中始终是 UTF-16(Unicode),在 UTF-16 中 U+0080 - U+00FF(整数代码点 128 - 159)是非图形字符,而U+2020 是 CP1252 字节 0x86 对应的字符。

用于System.out.write(/*int 0-255 only*/i)输出已编码的字节。或者在这种情况下不太方便,但在其他情况下更可取,将字节放入数组中byte[]并使用System.out.write(byte[]).

于 2018-07-17T20:01:38.227 回答
0

啊,现在可以了...有人知道这里涉及哪些字符集吗?我稍后会发现,但现在很混乱。谢谢:它适用于对应于 8224 的 Unicode U+2020(十六进制):

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 † : 
††
于 2018-07-19T11:49:58.937 回答