Oracle 字符集设置

问题描述

我在 ORACLE 中使用 adodb 遇到特殊字符(如“Ñ”、“á”)的问题: 当保存在 varchar2/varchar 字段 de 表中时保存其他字符“¿”。

如果与 oci8 conect 连接(直接到 oracle)特殊字符被正确保存。

连接时如何设置字符集?

($db->Connect(TNS_database,USER,PASSword));

谢谢!!!

解决方法

使用 ADOdb,您应该设置 Oracle 'client'(即 PHP OCI8)字符集。有两种方法可以做到这一点:

  • 在启动 PHP 的 shell 中,您可以将环境变量 NLS_LANG 设置为“.AL32UTF8”之类的内容(以句号开头)。如果 PHP 是从 Web 服务器调用的,那么您需要确保使用正确的语法在正确的位置设置此变量。

  • 或者,您可以使用一些 ADOdb 函数,例如 setConnectionParametersetCharSet。我不清楚用于 Oracle 的确切语法。您将需要通过堆栈进行一些调试。您想要的是 https://github.com/ADOdb/ADOdb/blob/v5.21.0/drivers/adodb-oci8.inc.php#L253 中的 $this->charSet 成为字符串 AL32UTF8