在Java中将CL8ISO8859P5编码转换为ASCII

时间:2017-12-07 13:46:05

标签: java oracle encoding character-encoding

可能你可能会给我一些提示,在我的案例中我能做什么/看看:)

有一个Oracle代码可将AMERICAN_AMERICA.CL8ISO8859P5中给定的十六进制输入转换为ASCII:utl_raw.cast_to_varchar2(utl_raw.convert(hextoraw('31383831303891353080853737303338385A5A'), 'AMERICAN_AMERICA.CL8ISO8859P5', 'AMERICAN_AMERICA.RU8PC866'))

示例输入:31383831303891353080853737303338385A5A,示例输出:188108С50АЕ770388ZZ

我的痛苦是解决如何在Java中完成它:)先决条件:我没有与数据库的连接,并且无法执行准备好的SQL语句以便在Oracle包中调用此函数... 我可以使用以下代码解析除特定字节(91 -> 'C1', 8085 -> 'B0B5', 5A -> 'Z')之外的所有内容:

new String(DatatypeConverter.parseHexBinary("31383831303891353080853737303338385A5A"))

我也尝试过使用编码的String构造函数中的所有标准编码,但没有积极的结果:(

您是否知道Java中的编码是否与AMERICAN_AMERICA.CL8ISO8859P5相同?或者您是否知道某些能够进行此转换的库或Java函数(AMERICAN_AMERICA.CL8ISO8859P5为ASCII)?

非常感谢你提前!

1 个答案:

答案 0 :(得分:0)

AMERICAN_AMERICA.RU8PC866 Oracle编码是Java中的IBM-866编码(来自@kfinity的提示)。我的问题通过使用

解决了
new String(DatatypeConverter.parseHexBinary(input), "IBM-866")

CP866也有效。