2017-04-05 5 views
2

私は自分のOracle SQLに接続し、utf8、 をすでに設定していますが、何かを選択または挿入すると文字化けしました。ここでPDO OCIでUTF8を設定する方法// PHP

は私のコードです:

define("DB_HOST", "(DESCRIPTION =(ADDRESS = (PROTOCOL=TCP) 
          (HOST= IP) 
          (PORT=1521)) 
          (CONNECT_DATA=(SID=IETDB))); 
          charset = utf8 
    "); 

この問題を解決するためにどのように?

答えて

1

これはサポートされていないので、接続文字列を変更することでこれを行うことはできません。

oci_connectマニュアルページに記述ように、第4のパラメータは、文字セットを指定します。

oci_connect($username, $password, $connection_string, 'UTF-8'); 

これは、UTF8形式の文字列を提供し、UTF8に結果セットを提供するために、あなたを期待するOCIを伝え、データベースの文字セットから変換。マニュアルから:

Oracleクライアントライブラリで使用される文字セットを指定します。文字セットは、データベースで使用される文字セットと一致する必要はありません。一致しない場合、Oracleはデータベース・キャラクタ・セットとの間でデータを変換するために最善を尽くします。文字セットによっては、これは使用可能な結果を​​提供しない可能性があります。また、変換では時間的なオーバーヘッドが加わります。

指定しない場合、Oracle ClientライブラリはNLS_LANG環境変数からキャラクタ・セットを決定します。

このパラメータを渡すと、接続にかかる時間が短縮されます。

あなたはPDO_OCIに文字セットを使用している場合は、再びas documented、DSNに追加することができます答えを

new \PDO('oci:dbname=' . $conn_string . ';charset=UTF8', $username, $password); 
+0

おかげで、私は "輸出NLS_LANG =" TRADITIONAL CHINESE_TAIWAN.UTF8" 」の「envvarsの挿入しますXAMPPの下で問題を解決してください! –

関連する問題