【问题标题】:how to handle ascii non-printable characters in java如何在java中处理ascii不可打印字符
【发布时间】: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所示

标签: java ascii


【解决方案1】:

您希望如何处理它们?将它们替换为可打印的内容(例如“?”)?完全删除它们?其他动作?

【讨论】:

    【解决方案2】:

    如果您在美国或“西欧”(英国、法国、德国),则字符集可能是 Windows-1252。单字节字符集 US-ASCII 涵盖 128 个字符,单字节字符集 Windwos-1252 是一个超集,涵盖了字节范围内的所有 255 个字符。

    最简单的是 \u0080 - \u00ff 的转换表。字符串,因为有些可能会更好地替换为多个字符,例如将 \u008c 替换为“OE”。

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2012-10-14
      • 2016-12-25
      相关资源
      最近更新 更多