這裏是我的PHP代碼如何PDO的Oracle(OCI)字符集設置爲UTF-8
$tns = "
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = myservice)
)
)";
$conn = new PDO("oci:dbname=" . $tns, 'user', 'pass');
當我嘗試的字符集設置爲UTF-8這樣的:
$conn = new PDO("oci:dbname=" . $tns . ";charset=UTF8", 'user', 'pass');
將獲得: ERROR: SQLSTATE[HY000]: OCINlsCharSetNameToId: unknown character set name (/app/software/php-5.6.30/ext/pdo_oci/oci_driver.c:610)pdo is NULL
我已經設置NLS_LANG爲AMERICAN_AMERICA.UTF8
,但看起來像我的主機需要重新啓動,我現在不能這樣做。
那麼,我應該怎麼做可以改變字符集utf8連接到oracle數據庫的pdo/oci?
而且我想:
- 不修改甲骨文DATABSE字符集
- ONLY使用PDO,而不是oci_connect
- 不重新啓動我的主機
你的Oracle數據庫是什麼版本?您可能需要使用'AL32UTF8'而不是 – Phil
Oracle版本是11g。 '$ conn = new PDO(「oci:dbname =」。$ tns。「; charset = AL32UTF8」,'user','pass');'得到同樣的錯誤。 – KaKa