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

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/02/09 03:05:25
  • 終了:2013/02/09 08:38:19

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492013/02/09 03:58:27

ポイント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ベストアンサー獲得回数11492013/02/09 03:58:27ここでベストアンサー

ポイント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

oil999回答回数1728ベストアンサー獲得回数3202013/02/09 08:21:42

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

putenv('NLS_LANG=Japanese_Japan.JA16SJIS');

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません