我正在使用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