#この記事の動作環境:Windows7 システム、PHP7.1 バージョン、DELL G3 パソコンphp で oracle に接続するときにエンコーディングを設定する方法: まず oracle の文字セットを取得し、次に PHP コードを "oci_connect("scott", "tiger", $db, 'zhs16gbk'); に設定します。 」。
エンコーディングの設定方法phpでOracleに接続するときは?
php は oracle に接続し、文字化けを避けるために文字セットを設定します。データベースは oracle を使用します。php が oracle に接続するときは、文字セットを指定するのが最善です。 PHP マニュアルを確認してください。oci_connect の 4 番目のパラメーターは charset であり、これがキーです。 まず、oracle の文字セットを取得し、「select * from V$NLS_PARAMETERS;」を実行します。変数 NLS_CHARACTERSET は、必要な文字セットに対応します。たとえば、ここでは「ZHS16GBK」です。したがって、最終的な PHP コードは次のようになります。 Php code$c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk'); $c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');私のローカル PHP ファイルは utf-8 を使用しているため、取得したコードは次のようにエンコードする必要があります。 変換: PHP コード
while ($dat = oci_fetch_row($cur)) { print_r(iconv('gb2312', 'utf-8', $dat[0])); } while ($dat = oci_fetch_row($cur)) { print_r(iconv('gb2312', 'utf-8', $dat[0])); }-------------------------- ---- -更新-------------------------------- 同僚らは、Oracle はクライアントが指定した文字セットに従ってデータを提供できると述べました。つまり、ローカルの PHP ファイルが UTF-8 を使用している場合、oci_connect を使用するときに utf-8 を直接指定でき、エンコード変換も保存されます。 Php コード
$c1 = oci_connect("scott", "tiger", $db, 'UTF8'); $c1 = oci_connect("scott", "tiger", $db, 'UTF8');さらに、奇妙な問題があります。以前にコード化された iconv は、テスト マシン環境では正常ですが、送信されると正しく解析できません。リモートの場所. その後、mb_convert_encoding に置き換えられました. コードは次のとおりです: Php コード
$nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk'); $nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');考えられる理由は、iconv の 2 番目のパラメーターが「//IGNORE」を追加しました。 http://cn2.php.net/manual/en/function.iconv.php を参照してください。興味があれば試してみてください。ただし、私は試しません。 推奨学習: 「
PHP ビデオ チュートリアル 」
以上がPHPをOracleに接続するときにエンコードを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。