我正在使用 Java/JT400 驱动程序将应用程序集成到 AS400。当我从参数文件中提取数据时遇到问题 - 检索到的数据似乎已被编码。
SELECT SUBSTR(F00001,1,20) FROM QS36F."FX.PARA" WHERE K00001 LIKE '16FFC%%%%%' FETCH FIRST 5 ROWS ONLY
输出
00001: C6C9D9C540C3D6D4D4C5D9C3C9C1D34040404040, - 1
00001: C6C9D9C5406040C3D6D4D4C5D9C3C9C1D3406040, - 2
如何将其转换为可读格式?有没有一个函数可以用来解码这个?
在与 AS400 的终端连接上,通过相同的 SQL 查询可以正确显示信息。
在此之前我没有使用 AS400 的经验,并且确实需要一些帮助。此问题仅与参数文件有关。数据库表工作正常。
最佳答案
您看到的是 EBCDIC 输出而不是 ASCII。这是由于其他答案中提到的 CCSID 未在数据库中指定。理想的解决方案是将 CCSID 分配给数据库中的字段。如果您没有能力这样做并且无法说服相关负责人这样做,那么以下解决方案也应该有效:
SELECT CAST(SUBSTR(F00001,1,20) AS CHAR(20) CCSID(37))
FROM QS36F."FX.PARA"
WHERE K00001 LIKE '16FFC%%%%%'
FETCH FIRST 5 ROWS ONLY
将 CCSID 替换为您需要的任何一个。 CCSID 定义可在此处找到:https://www-01.ibm.com/software/globalization/ccsid/ccsid_registered.html
关于java - 参数文件上的 AS400 SQL 脚本返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52988989/