【发布时间】:2011-12-16 12:41:27
【问题描述】:
UTF8 字符未显示在 Oracle 数据库上的链接表中。 (它们甚至导致访问无法锁定记录)
我尝试在连接字符串中添加"charset=utf8",但到目前为止还没有成功。
我想我会在程序运行时尝试这个查询:
SET NAMES utf8
但是如何通过与链接表相同的连接在远程 Oracle 服务器上运行它?
【问题讨论】:
标签: oracle ms-access utf-8 odbc
UTF8 字符未显示在 Oracle 数据库上的链接表中。 (它们甚至导致访问无法锁定记录)
我尝试在连接字符串中添加"charset=utf8",但到目前为止还没有成功。
我想我会在程序运行时尝试这个查询:
SET NAMES utf8
但是如何通过与链接表相同的连接在远程 Oracle 服务器上运行它?
【问题讨论】:
标签: oracle ms-access utf-8 odbc
我自己没有在 Windows 上使用 Oracle ODBC,但我确实在许多 UNIX 操作系统上使用了各种 Oracle ODBC 驱动程序。您没有说您使用的是哪个 ODBC 驱动程序,但您确定它具有连接属性 charset=utf8?适用于 Linux 的 Oracle ODBC 驱动程序似乎没有此属性。此外,我还没有听说过 Oracle 的“set names utf8”;那不是mysql的东西吗?
在 UNIX 中,要从 Oracle 取回 UTF-8 数据,您可以将 NLS_LANG 环境变量设置为类似 AMERICAN_AMERICA.AL32UTF8 的值,这会告诉 Oracle 客户端库您需要数据的方式。
顺便说一句,ODBC 对 UTF-8 的处理并不好(这里的解释太长了)。 Windows 上的 ODBC 驱动程序使用所谓的宽 API SQLxxxW,它接受并返回大小为 2 个字节且通常采用 UCS-2 编码的 SQLWCHAR。 Windows 上的 Unicode 兼容驱动程序应提供 SQLxxxW 范围的 API,而 UTF-8 不包含在内。
但是,正如我所说,我不在 Windows 上使用 Oracle,但上面的一些内容可能会对您有所帮助。
【讨论】: