假设您的目标系统是IBM大型机或中型系统,它完全支持内置在其JVM中的所有EBCDIC编码,作为名为CPxxxx的编码,对应于IBM CCSID(CP代表代码页).您需要在主机端进行翻译,因为客户端将没有必要的编码支持.
由于Unicode是DBCS以及更高版本,并且支持每个已知字符,因此您可能会针对多个EBCDIC编码; 所以你可能会以某种方式配置这些编码.尝试仅使用您的客户端Unicode(UTF-8,UTF-16等),并在数据到达主机和/或离开主机系统时完成转换.
除了需要在主机端进行翻译之外,其他机制与任何Java翻译相同; 例如new String(字节,编码)和String.getBytes(编码),以及各种NIO和writer类.真的没有什么神奇之处 - 它与在ISO 8859-x和Unicode之间或任何其他SBCS(或有限的DBCS)之间进行翻译没有什么不同.
例如:
byte[] ebcdta="Hello World".getBytes("CP037"); // get bytes for EBCDIC codepage 37
Run Code Online (Sandbox Code Playgroud)
您可以在IBM的文档网站上找到更多信息.
您始终可以使用 IBM Toolbox for Java ( JTOpen ),特别com.ibm.as400.access.AS400Text是 jt400.jar 中的类。
它是这样的:
int codePageNumber = 420;
String codePage = "CP420";
String sourceUtfText = "???? ???? ????";
AS400Text converter = new AS400Text(sourceUtfText.length(), codePageNumber);
byte[] bytesData = converter.toBytes(sourceUtfText);
String resultedEbcdicText = new String(bytesData, codePage);
Run Code Online (Sandbox Code Playgroud)
我使用了代码页420及其对应的编码CP420 的java表示,该代码页用于阿拉伯文本,因此,您应该为中文文本选择合适的代码页。
| 归档时间: |
|
| 查看次数: |
25911 次 |
| 最近记录: |