mysql - Delphi 5,如何从 MySQL 的 tis620 字段中检索数据?

标签 mysql delphi utf-8 character-encoding collation

我有一个用 PHP 编写的 Web 应用程序,它使用 MySQL 作为数据库后端。

为了存储我的语言(泰语)数据,我在我的数据库表上使用了 tis620 字符集,目前这个设置非常适合我的 Web 应用程序。

我打算编写一个 Windows 应用程序来访问与我的 Web 应用程序相同的数据库,但我遇到了从 tis620 字段检索数据的问题。

这是我的表的默认排序规则,使用 tis620

enter image description here

出于测试目的,我将 eng 字段的排序规则设置为使用 utf8 enter image description here

我向表中插入了一条样本记录

enter image description here

我正在使用 Oracle 的 MySQL 连接器/ODBC 5.1 作为 ODBC 驱动程序,并尝试设置为 utf8 和 tis620

enter image description here

我正在使用 Delphi 5,TTable 来连接数据库表

  1. 可以检索带有 utf8 的字段
  2. 无法检索带有 tis620(表的默认值)的字段

    • 尽管使用字段编辑器创建所有字段,但我只能得到 utf8 字段。

enter image description here

请给我一些建议,目前 tis620 最适合我的 Web 应用程序,如果我将字段转换为 utf8,我可以解决这个问题,但我的 Web 应用程序会有问题。

那么如何使用 BDE 数据访问组件(TTable、TQuery)从 tis620 字段中检索数据?

请帮忙。

谢谢大家

最佳答案

您是否在 Windows 设置中使用“泰语”作为非 Unicode 应用程序的语言? Delphi 5 应用程序可以很好地同时使用泰语和英语。你不能开箱即用的是混合字符集。但我怀疑您不需要完整的 Unicode,只是为了显示一些泰语和英语内容。

然后在您的 ODBC 驱动程序中设置代码页 Win-874。

或者您可以从已弃用的 BDE 切换到更新的库。如果您坚持使用 Delphi 5,我建议您测试 FreeDAC原生支持:

  • Oracle v 8.0.3 及更高版本;
  • MySQL v 3.23 及更高版本;
  • MSSQL v 2000 及更高版本;
  • MSAccess v 2000 及更高版本;
  • IBM DB2 UDB v 8 及更高版本;
  • Sybase ASA v 8 及更高版本。

当然,这个库已被弃用(有利于它的 AnyDAC/FireDAC 演变),但它是 AFAIK Delphi 5 的最佳解决方案之一。它是免费的,有源代码。恕我直言,在 Delphi 世界中,它比任何基于 ADO 的组件更受欢迎。

如果您使用 FreeDAC,则不需要配置 ODBC(当然也不需要 BDE),因为它提供了对 MySQL 的直接访问。

关于mysql - Delphi 5,如何从 MySQL 的 tis620 字段中检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16118370/

相关文章:

windows - PowerShell脚本不保留源文件的编码

关于编码有符号/无符号的 Char C 问题

php - MySQL 查询正在创建重复行

delphi - 计算备忘录中的特定文本(Delphi)

delphi - Delphi:将多行字符串保存到文件

delphi - (如何)我可以使用带有标准文件打开对话框的 FutureWindows 吗?

html - 打开问号仅在某些 linux 环境中显示

mysql - 具有相同标识符的多行,如何通过多个左连接选择具有最高值的行(忽略其余行)?

Php PDO 事务中的多个准备语句

c# - SQL 删除语句不适用于从 dataGridView 选择行