【发布时间】:2021-07-09 23:46:53
【问题描述】:
我们有人在 Java 的字节数组中发送不可打印的 \x86 类型的字符,当我们将其转换为 us-ascii 字符串时,它会在 ascii 文本中插入垃圾字符。
在将数据从 EBCDIC 等格式转换为 Java 中的 ASCII 时,是否有字符串格式/其他方式来处理不可打印的 ascii 字符?
【问题讨论】:
-
Java 中的字符串是 UTF-16。你是如何进行从字节数组到字符串的转换的?您是否只是在做:
new String(byteArray, "US-ASCII");也许这可能会有所帮助:stackoverflow.com/a/5536013/355499 -
如果真的是EBCDIC字节,Java支持three EBCDIC encodings:即IBM500/Cp500、x-IBM834/Cp834和IBM1047/Cp1047;您可以使用其中之一将 EBCDIC 字节转换为 @EmilH 建议的 US-ASCII 字符串。不相关的解决方案,您可以将EBCDIC字符转换为Unicode等价物,如effbot.org/zone/unicode-gremlins.htm所示