gpt4 book ai didi

mysql - MySQL的ANSI和Unicode驱动的区别

转载 作者:IT老高 更新时间:2023-10-28 23:43:31 39 4
gpt4 key购买 nike

在 Windows 上选择 ODBC(64 位)下的数据源时,我得到 MySQL 数据库的两个可用选项:

  • MySQL ODBC 5.3 ANSI 驱动程序
  • MySQL ODBC 5.3 Unicode 驱动程序

这两者有什么区别?

最佳答案

首先我应该说我不使用 MySQL,但我知道 ODBC 驱动程序。在 ODBC 中,unicode 和 ansi 有不同的 API。 ansi API 以 A 结尾,unicode API 以 W 结尾(例如,SQLPrepareA 和 SQLPrepareW)。 ansi API 接受字符串的字节/八位字节,因此只能处理 chrs 0-255。 unicode API 接受 SQLWCHAR,它们是 2 字节 UCS-2 编码的 unicode 代码点(较新的 MS SQL Server 版本可以处理 UTF16 编码的字符串),因此可以处理大约 unicode 中的前 65000 个代码点。

因此,如果您需要存储 unicode 数据,则无法选择使用哪个驱动程序。

我不会让 Carnangel 对速度的评论让您无法使用 unicode 驱动程序,而且无论如何他的评论不包含任何事实。他可能指的是:

如果您将 unicode 数据存储在 MySQL 中,它将被 UTF-8 编码并作为 UTF-8 在您的网络上传输。在客户端,ODBC 驱动程序必须将 UTF-8 编码的数据转换为 UCS-2,因为这是 ODBC 需要的。显然相反。

如果您使用 unicode ODBC 驱动程序编写 ANSI ODBC 应用程序(即使用 ansi ODBC api 的应用程序),则 ODBC 驱动程序管理器必须将驱动程序返回的 UCS-2 转换为 8 位(有损)并转换您传递给 UCS-2 驱动程序的 8 位数据。所以不要那样做。

这些天来,如果有人仍在使用 ANSI ODBC 驱动程序,我会感到惊讶。

关于mysql - MySQL的ANSI和Unicode驱动的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25889046/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com