windows xp / windows 7 で、xamppを入れて、php がutf-8 oracleがsjis で

接続したところ、oracleからデータを取得した文字が、文字化けしています。
linux (centos)では、 php utf-8 oracle sjis でも文字化けしませんでしたが、
windowsで文字化けして困っています。
windowsでも動かすにはどのようにしたらよいでしょうか。。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/02/09 08:38:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント200pt

どのようなセッティングを行ったのか判りませんが、
WindowsとCentOSでクライアントのキャラクタセットのデフォルトが違うというのが原因でしょう。

クライアントのキャラクタセット変更はNLS_LANGで、UTF8に設定します。

NLS_LANGの詳しい説明や設定方法は下記にあります。
(どれも重要なことばかりなので抜粋しません。参照してください。)
恒久的変更はレジストリ変更になりますが、システム変数でもセッティングできますので、まずはシステム変数にセットして再起動してみると良いでしょう。
http://otndnld.oracle.co.jp/tech/globalization/htdocs/nls_lang%20faq.htm#_Toc110410552

時間があればこちらも…。
http://docs.oracle.com/cd/E16338_01/server.112/b56307/ch2charset.htm#i1006750

id:windofjuly

修正箇所が多くなるかもしれない(デバッグやメンテの時に困る)し処理時間も気持ち長くなる(遅くなる)ので書かなかったのだけど、php側でmb_convert使って変換するという手もなくはないですね。

2013/02/09 07:28:48

その他の回答1件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149ここでベストアンサー

ポイント200pt

どのようなセッティングを行ったのか判りませんが、
WindowsとCentOSでクライアントのキャラクタセットのデフォルトが違うというのが原因でしょう。

クライアントのキャラクタセット変更はNLS_LANGで、UTF8に設定します。

NLS_LANGの詳しい説明や設定方法は下記にあります。
(どれも重要なことばかりなので抜粋しません。参照してください。)
恒久的変更はレジストリ変更になりますが、システム変数でもセッティングできますので、まずはシステム変数にセットして再起動してみると良いでしょう。
http://otndnld.oracle.co.jp/tech/globalization/htdocs/nls_lang%20faq.htm#_Toc110410552

時間があればこちらも…。
http://docs.oracle.com/cd/E16338_01/server.112/b56307/ch2charset.htm#i1006750

id:windofjuly

修正箇所が多くなるかもしれない(デバッグやメンテの時に困る)し処理時間も気持ち長くなる(遅くなる)ので書かなかったのだけど、php側でmb_convert使って変換するという手もなくはないですね。

2013/02/09 07:28:48
id:oil999 No.2

回答回数1728ベストアンサー獲得回数320

PHP側でNLS_LANG変数を設定してみてください。

putenv('NLS_LANG=Japanese_Japan.JA16SJIS');

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません