ホームページ >バックエンド開発 >PHPの問題 >PHP oracleの文字化け問題を解決する方法

PHP oracleの文字化け問題を解決する方法

藏色散人
藏色散人オリジナル
2020-07-21 11:14:462476ブラウズ

php Oracle の文字化けは、キャラクタ セット情報の構成が正しくないことが原因で発生します。解決策は、PLSQL を通じて "select * from V$NLS_PARAMETERS;" を実行して Oracle キャラクタ セットを取得し、正しいキャラクタ セットにリセットすることです。それでおしまい。

PHP oracleの文字化け問題を解決する方法

PHP Oracle 中国語のコード化けの問題

通常、デフォルト設定では、Oracle に接続するときにコード化けの問題が発生します。実際、ほとんどの人は、クライアントが Oracle サーバーに接続する前に、まずサーバーの文字セット情報をクライアントで正しく設定する必要があり、Oracle 文字セットは「select * from」を実行することで取得できることを知っています。 V$NLS_PARAMETERS;" を PLSQL 経由で実行します。変数 NLS_CHARACTERSET は、必要な文字セットに対応します。たとえば、これは "WE8ISO8859P1"

推奨: "PHP チュートリアル "

文字セットの設定方法は以下のとおりです。

方法 1: 接続前に環境変数を設定する

putenv("NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1");
$conn=oci_new_connect($config['username'], $config['password'],$config['database']);

方法 2: 接続時に環境変数を設定する

$conn=oci_new_connect($config['username'], $config['password'],$config['database'],'we8iso8859p1');

しかし、速いです。 上記の設定で読み込んだ中国語データは、エンコーディングを設定しなくても、ページ内で使用されると正常に表示されることがわかります (ページの文字セットが UTF8 の場合) )、

、we8iso8859p1 -> utf-8 に変換してもやはり文字化けします。

実際、注意深く調査した結果、oci8 は、データベース エンコーディング WE8ISO8859P1 でデータを取得した後、そのデータをオペレーティング システムのデフォルトのエンコーディング形式に自動的に変換することがわかりました。は GBK であり、実際には OCI8 を通じて読み取られます。文字エンコーディングは GBK であるため、ページを使用する際のエンコーディング変換は GBK -> utf-8:

 echo iconv('GBK','utf-8',$vo["USERNAME"]);
である必要があります。

以上がPHP oracleの文字化け問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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