ホームページ  >  記事  >  バックエンド開発  >  PHPをOracleに接続するときにエンコードを設定する方法

PHPをOracleに接続するときにエンコードを設定する方法

藏色散人
藏色散人オリジナル
2021-07-02 10:36:492291ブラウズ

php で oracle に接続するときにエンコーディングを設定する方法: まず oracle の文字セットを取得し、次に PHP コードを "oci_connect("scott", "tiger", $db, 'zhs16gbk'); に設定します。 」。

PHPをOracleに接続するときにエンコードを設定する方法

#この記事の動作環境:Windows7 システム、PHP7.1 バージョン、DELL G3 パソコン

エンコーディングの設定方法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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。