java - 匕首输出java(char)134不起作用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 是:†</p>
为什么不显示 † ?
解决方案
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[])
.
推荐阅读
- python - Python正则表达式匹配源代码中以新行结尾的文本
- nginx - 使用 nginx 指令在另一个位置查找 jpg
- firebase - paypal 与 firebase 功能的集成在日志中有错误
- go - 如何测试一个函数在 goroutine 中被调用?
- javascript - angularjs中的自定义验证比较两个日期
- html - HTML CSS 导航栏不够宽&错误的高亮悬停
- clojure - 在 clojure 中读取文件并使用命令提示符显示内容
- php - Bootstrap 4轮播下一张和上一张幻灯片不起作用
- javascript - http-proxy-middleware 提升:ERR_CONTENT_LENGTH_MISMATCH
- java - 如何将对象传递到新形式?