ホームページ > バックエンド開発 > PHPチュートリアル > PHPでORACLEに接続すると文字化けしてしまいますが、手動でPUTENV(NLS_LANG)すると環境変数が正常になりました!

PHPでORACLEに接続すると文字化けしてしまいますが、手動でPUTENV(NLS_LANG)すると環境変数が正常になりました!

WBOY
リリース: 2016-06-23 13:13:24
オリジナル
1219 人が閲覧しました

MYSQL から ORACLE RAC に移行するプロジェクトがあります。データベースは UTF8 エンコーディング形式です。PHP を使用した単純な接続を通じて取得された中国語の文字は、データベースに接続するときにすべて疑問符であることが後でわかりました。 UTF8として指定する必要があります。環境変数を指定し、PHPのグローバル環境変数phpinfo(INFO_ENVIRONMENT)をテストページに出力しました。結果は正常です。指定しないと、PHP 環境変数ページに nls_lang の変数情報が表示されず、依然として文字化けします。 PUTENV (NLS_LANG) を手動で定義する必要がありますか?始まり? PHPサービス実行時に環境変数nls_langのパラメータを取得する方法についてアドバイスをお願いします。 INFO_ENVIRONMENT に成功が自動的に表示されます。

補足すると、私はcentos6.5で、.bash_profileにnls_langが定義されています。しかし、うまくいかないようです。 PHPは5.6、WEBサーバーはnginx 1.9です


ディスカッションへの返信(解決策)

ORACLEにはutf8はありません
リンクするときORACLE 使用する文字セットを宣言するだけ
環境変数を設定する必要があるのは ORACLE 8 以下のみです

ORACLE には utf8 はありません utf-8 のみです
ORACLE をリンクするときに使用する文字セットを宣言する必要があります
環境変数を設定する必要があるのは ORACLE 8 以下のみです


あなたは正しいですが、JAVA
$conn = OCI_Logon('orcl','orcl','127.0.0.1/orcl','UTF8');或者putenv("NLS_LANG=american_america,UTF8");
ログイン後にコピー

のようなPHP接続文字列にないデフォルトの文字セットを設定する方法はありますか?どちらも正常に動作します。 TEST.PHP テキストは UTF8 形式であり、データベースも UTF8 形式であるため、事前に宣言することなく JAVA のようにしたいだけです。

を手動で入力する必要がありますか?システム環境変数 nls_lang を実行すると、結果は空になります。
phpinfo(INFO_ENVIRONMENT);
?>
PHP の初期化時にシステム環境変数を読み込む方法、つまり PHP を指定する方法について教えてください。環境変数、bash_profile が機能しません。

$conn = OCI_Logon('orcl','orcl','127.0.0.1/orcl','UTF8'); と書くのはそんなに面倒ですか?
Java は jdbc を介してデータベース操作を実行し、php はクライアントを介して操作します
そのため、後者はさらにセットアップ作業を行う必要があります

実際、この会社は別のソフトウェア会社の製品であり、ネイティブ MYSQL であり、その後会社によって要件 ORACLE RAC データベースを統合し、移行します。 。わかりました。データベース接続がどこに書かれているか調べて、自分で変更します。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート