ホームページ  >  記事  >  バックエンド開発  >  php oracleが文字化けした場合はどうすればよいですか?

php oracleが文字化けした場合はどうすればよいですか?

藏色散人
藏色散人オリジナル
2020-07-25 10:10:452906ブラウズ

php Oracle の文字化けの解決策: まず、PLSQL で「select * from V$NLS_PARAMETERS;」を実行して Oracle の文字セットを取得し、次にクライアントでサーバーの文字セット情報を正しく設定します。

php oracleが文字化けした場合はどうすればよいですか?

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

PHP Oracle 中国語の文字化け問題

通常、デフォルト構成で Oracle に接続すると、中国語の処理時に文字化けが発生します。実際、ほとんどの人は、クライアントが Oracle サーバーに接続する前に、サーバーの文字セット情報を正しく設定する必要があることを知っています。 PLSQL を介して "select * from V$NLS_PARAMETERS;" を実行して、Oracle のキャラクタ セットを取得します。変数 NLS_CHARACTERSET は、必要なキャラクタ セットに対応します。たとえば、ここでは "WE8ISO8859P1"

メソッド文字セットの設定方法は次のとおりです。

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

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

関連紹介:

Oracle 一般オラクル社;

オラクル社、正式名 Oracle Corporation (Oracle Software Systems Co., Ltd.) は、米国カリフォルニア州レッドウッドビーチに本社を置く世界最大のエンタープライズ ソフトウェア会社です。 1989年に中国市場に正式参入。 2013 年に Oracle は IBM を超え、Microsoft に次ぐ世界第 2 位のソフトウェア企業になりました。

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

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

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

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

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

以上がphp oracleが文字化けした場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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