【问题标题】:Delphi 2009 + Zeos + MySQL DBGrid displaying strings as (BYTES)Delphi 2009 + Zeos + MySQL DBGrid 将字符串显示为 (BYTES)
【发布时间】:2015-09-16 12:14:28
【问题描述】:

我在使用 Delphi 2009 中的 Zeos 库时遇到了一些问题。 我有一个带有 utf8_bin 编码的 MySQL 数据库,当我试图 从数据库中检索一些字符串并使用 DBGrid 显示它 DBGrid 显示的是单词 (BYTES) 而不是实际的字符串。

我尝试更改一些设置,但没有成功。经过一番努力, 我下载了“DAC for MySQL”的试用版,奇怪的是 一切都很完美。

该程序是一个非常简单的程序,带有一个 Zconnection、一个 Ztable、 一个数据源和一个 DBGrid。数字显示正确,只有字符串有这个问题。我尝试了不同的东西,但我不知道 我还能做什么。

MySQL 版本是 5.6.24

ZEOSlib 7.1.4-stable

如果有人有建议,请帮助我! 谢谢你的时间(对不起我的英语不好)

【问题讨论】:

    标签: mysql delphi delphi-2009 zeos


    【解决方案1】:

    MySQL 5.6-23 和 ZeosLib 7.1.4-stable 与 Delphi XE7 的问题完全相同。

    我的 TZConnection 初始化为:

    • ClientCodePage 到 latin1
    • ControlsCodePage 到 cCP_UTF16
    • 属性
      • AutoEncodeStrings=开启
      • controls_cp=CP_UTF16
      • codepage=latin1
    • 协议 mysqld-5

    我的数据库是使用默认字符集和排序规则 (utf8/utf8_bin) 创建的,即使使用 latin1/latin1_bin,我也遇到了与您相同的问题

    然后我通过 CREATE DATABASE IF NOT EXISTS MyDbName CHARACTER SET latin1 COLLATE latin1_general_cs 更改了数据库,然后一切正常

    希望对你有所帮助。

    【讨论】:

    • 非常感谢您的回复,这个解决方案中的问题是我必须将排序规则从 utf8_bin 更改为 latin1_general_cs ,我更愿意避免这种情况并坚持使用 utf8。
    猜你喜欢
    • 1970-01-01
    • 2011-01-01
    • 2010-09-21
    • 2023-04-06
    • 2012-08-30
    • 2017-03-17
    • 1970-01-01
    • 2022-07-26
    相关资源
    最近更新 更多