我们通过HIT OLEDB和HIT ODBC连接到多成员AS400 iSeries表。Delphi TBytesField - 如何正确查看文本 - 源代码是HIT OLEDB AS400
您通过别名连接到此表以访问特定的多成员。我们在AS400创建别名是这样的:
CREATE ALIAS aliasname FOR table(membername)
然后,我们可以查询该表中的每个成员这样说:
SELECT * FROM aliasname
我们在Delphi6的第一个测试这一点,但将其移动到D2010稍后
我们使用HIT OLEDB作为AS400。
我们从表中拉下记录,该字段被视为tBytesField。我也尝试了ODBC驱动程序,它也被看作tBytesField。
直接在AS400上,我可以查询数据并查看可读文本。我可以使用“iSeries导航”工具并查看可读的文本。
然而,当我通过HIT OLEDB把它归结为德尔福的客户端或HIT ODBC,并尝试通过asString查看然后我就看到不可读的文本..这样的事情:
NDD @ðõñððððñ÷@ õôððõñòøóóöøñðÂÁÕÒ@ OAE @ÁÔÅÙÉÃÁ@@@@@@@@ÂÈÙÉâãæÁðòñè@ OK @沃顿ÉÕÃ[email protected]@@@@@@@@ç
我错杂上面的文字,但是字符类型出现。
当我做了一个测试在D2010的文字看起来像japanse或中国文字,但如果我显示为AnsiString类型那么它看起来像它做什么在Delphi 6
我想这可能有事情要做与代码页或字符集,但我没有这方面的经验,所以它是新的,如果它是相关的。当我查看AS400上的编码字符集时,它设置为65535.
我需要做些什么才能使此文本可读?
我们确实有一个第三方组件(Delphi400),它使得事物以更原生的AS400方式运行。当我使用它的AS400连接和AS400查询组件时,它将该字段显示为tStringField并显示得很好。但是我们正在逐步淘汰这款产品(出于多种原因),并且真的很喜欢带有ADO组件的OLEDB。
只是澄清用tADOQuery的HIT OLEDB确实有一些字段显示为我们使用的许多其他表格的tStringFields ...不知道为什么它在这种情况下显示为tBytesField。我不是AS400的专家,但是看看AS400上的字段definititions,那些显示为tBytesField的字段看起来与显示为tStringFields字段的字段相同...但是必须有所不同。也许是因为是多人成员?
那么......没有人有任何指导如何获得正确的字符串数据是可读的吗?
如果您需要更多信息,请询问。
格雷格
你确定你没有看到[EBCDIC] [1]编码文本? [1]:http://en.wikipedia.org/wiki/EBCDIC – 2010-04-29 06:28:06
(男孩我希望评论栏可以支持更多减价) – 2010-04-29 06:30:20
它可能是EBCDIC,但现在我已经把数据放在了客户端。 ..如何在Delphi 2010中将此从EBCDIC转换为ANSI(基于unicode的系统) – gsaunders 2010-04-30 15:53:34