UTF-8 到 Java 中的 EBCDIC

2022-09-03 06:03:28

我们的要求是将 EBCDIC 文本发送到大型机。我们有一些汉字,因此UTF8格式。那么,有没有办法将UTF-8字符转换为EBCDIC?

谢谢 拉杰·莫汉


答案 1

假设您的目标系统是 IBM 大型机或中端,它完全支持其 JVM 中内置的所有 EBCDIC 编码,作为名为 CPxxxx 的编码,对应于 IBM CCSID(CP 代表代码页)。您需要在主机端执行转换,因为客户端将没有必要的编码支持。

由于Unicode是DBCS或更高版本,并且支持每个已知字符,因此您可能会针对多个EBCDIC编码;因此,您可能会以某种方式配置这些编码。尝试仅使用客户端 Unicode(UTF-8、UTF-16 等),并在数据到达主机和/或离开主机系统时进行转换。

除了需要在主机端进行翻译外,机制与任何Java翻译相同;例如,新的 String(bytes,encoding) 和 String.getBytes(encoding),以及各种 NIO 和 writer 类。这真的没有什么魔力 - 这与在ISO 8859-x和Unicode或任何其他SBCS(或有限的DBCS)之间进行转换没有什么不同。

例如:

byte[] ebcdta="Hello World".getBytes("CP037");  // get bytes for EBCDIC codepage 37

您可以在 IBM 的文档网站上找到更多信息。


答案 2

EBCDIC 有许多 8 位代码页。VM 支持其中许多功能。看看,EBCDIC页面被命名(有别名,如你所看到的)。Charset.availableCharsets().keySet()IBM...cp500IBM500Charset.forName("IBM500").aliases()

有两个问题:

  1. 如果您在 EBCDIC 的不同代码页中包含字符,这将无济于事
  2. 我不确定,如果这些字符集在窗口外的任何vm中可用。

首先,看看这种方法。对于第二个,尝试所需的目标运行时;-)


推荐