java - Dagger 输出 java (char)134 不起作用 cp1252

标签 java char show dagger cp1252

通常我的程序应该将所有 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 是: †

为什么不显示 † ?

最佳答案

CP1252 中的字节值 134(或 0x86)确实是 dagger,但 Java 中的 char 始终为 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[])

关于java - Dagger 输出 java (char)134 不起作用 cp1252,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51387126/

相关文章:

java - Java 中动态缩进字符串的快速方法

java - Struts1 输出 util.Date 符合 <html :text> for different Locale 中的特定格式

c - c中的错误函数返回

c - 嵌入式编译不喜欢 char *var[]= {"data","data"};

c++ - 如何将 std::queue<char> 复制到 std::string?

Javafx如何跨行?

java - 批量查询到 Cassandra

Jquery 为空时搜索全部

javascript - 使用 JQuery 切换功能显示/隐藏 youtube 但无法让它在隐藏时停止播放

java - 将代码从 Java 更改为 C