【问题标题】:Delphi TBytesField - How to see the text properly - Source is HIT OLEDB AS400Delphi TBytesField - 如何正确查看文本 - 来源是 HIT OLEDB AS400
【发布时间】:2010-05-04 05:18:17
【问题描述】:

我们正在通过 HIT OLEDB 和 HIT ODBC 连接到一个多成员 AS400 iSeries 表。

您通过别名连接到此表以访问特定的多成员。我们以这种方式在 AS400 上创建别名:

CREATE ALIAS aliasname FOR table(membername)

然后我们可以这样查询表的每个成员:

SELECT * FROM aliasname

我们首先在 Delphi6 中对此进行测试,但稍后会将其移至 D2010

我们正在为 AS400 使用 HIT OLEDB。

我们正在从表中提取记录,并且该字段被视为 tBytesField。我也尝试过 ODBC 驱动程序,它也被视为 tBytesField。

直接在 AS400 上,我可以查询数据并查看可读文本。我可以使用 iSeries 导航工具并查看可读文本。

但是,当我通过 HIT OLEDB 或 HIT ODBC 将它带到 Delphi 客户端并尝试通过 asString 查看时,我只看到不可读的文本.. 像这样:

ñðð@ðõñðõñòøóóöøñðÁÕÒ@ÖÆ@ÁÔÅÙÉÃÁ@@@@@@@@ÂÈÙÉâãæÁðòñè@ÔK@k@ÉÕÃK@@@@@@@@@ç

我把上面的文字弄乱了,但这是显示的字符类型。

当我在 D2010 中进行测试时,文本看起来像日语或中文字符,但如果我显示为 AnsiString,那么它看起来就像它在 Delphi 6 中所做的那样。

我认为这可能与代码页或字符集有关,但我没有这方面的经验,所以如果它是相关的,这对我来说是新的。当我查看 AS400 上的编码字符集时,它设置为 65535。

我需要怎样做才能使该文本可读?

我们确实有一个第三方组件 (Delphi400),它可以让事情以更原生的 AS400 方式运行。当我使用它的 AS400 连接和 AS400 查询组件时,它将该字段显示为 tStringField 并显示得很好。但是我们正在逐步淘汰该产品(出于多种原因),并且非常希望带有 ADO 组件的 OLEDB 能够正常工作。

为了澄清,带有 tADOQuery 的 HIT OLEDB 确实有一些字段显示为我们使用的许多其他表的 tStringFields……不知道为什么在这种情况下它显示为 tBytesField。我不是 AS400 专家,但查看 AS400 上的字段定义,显示为 tBytesField 的字段定义看起来与显示为 tStringFields 的字段定义相同......但肯定有区别。也许是因为是多成员?

那么...有人对如何获取正确的可读字符串数据有任何指导吗?

如果您需要更多信息,请询问。

格雷格

【问题讨论】:

  • 您确定您没有看到 [EBCDIC][1] 编码文本吗? [1]:en.wikipedia.org/wiki/EBCDIC
  • (男孩,我希望评论字段支持更多降价)
  • 它可能是 EBCDIC,但现在我已经在客户端下载了数据......如何在 Delphi 2010 中将其从 EBCDIC 转换为 ANSI(基于 unicode 的系统)

标签: delphi db2 ibm-midrange


【解决方案1】:

一个问题是您的客户端不知道它应该将数据从 EBCDIC 转换为 ASCII,因为服务器表上的 CCSID 设置不正确。

CCSID 为 65535 应该意味着该字段包含二进制数据。您的客户不知道该列包含 EBCDIC 编码字符串,因此不会尝试对其进行转换。

在我的服务器上,我们所有的字符字段的 CCSID 都是 37,即 EBCDIC。

【讨论】:

  • 那么在不更改 AS400 上的 CCSID 的情况下...有什么可以在客户端上进行正确解码的操作吗?
【解决方案2】:

我找到了答案...在 HIT ODBC 400 和 HIT OLEDB 400 上都有一个名为“Convert CCSID 65535=True”的属性,或者在 OLEDB UDL 中它看起来像“Binary Characters=True”。

不知道我是怎么错过的,但那成功了!

感谢您的反馈。

【讨论】:

    猜你喜欢
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2015-01-15
    相关资源
    最近更新 更多