首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dagger输出java (char)134不工作cp1252

dagger输出java (char)134不工作cp1252
EN

Stack Overflow用户
提问于 2018-07-18 01:24:00
回答 2查看 142关注 0票数 0

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

代码语言:javascript
复制
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");
}

但是输出是:(整个输出的片段!)

代码语言:javascript
复制
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是:†

为什么不显示†?

EN

回答 2

Stack Overflow用户

发布于 2018-07-18 04:01:38

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[])

票数 1
EN

Stack Overflow用户

发布于 2018-07-19 19:49:59

啊现在它起作用了..。有人知道这里涉及哪些字符集吗?我稍后会发现,但现在它是令人困惑。谢谢:它与对应于8224的Unicode U+2020 (十六进制)一起工作:

代码语言:javascript
复制
fW.write("Omg it writes † : ");
        fW.write(13);
        fW.write(10);
        fW.write(0x2020);
        fW.write(8224);
        fW.write(13);
        fW.write(10);

输出:

代码语言:javascript
复制
    Begin:
Omg it writes † : 
††
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51387126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档