半角カタカナの文字化けについて
半角カタカナの文字化けについて
はじめまして。半角カタカナの文字化けについて教えて下さい。

当環境は,OS「RedHat Linux ES3.0」DBは「Oracle10G」
WEBサーバ「Apache2.0.XX」aplが「PHP4.3.11」になります。

php.iniの設定を以下のようにしているのですが「ソリューション表示」のスクリプト(mb_test.php)にて「半角カタカナ」を入力してテストすると文字化けします。半角カタカナ以外であれば文字化けしません。Apacheの設定ファイルで文字コードの設定は特にいじっていません。理由など分かりますでしょうか?宜しくお願い致します。


output_buffering = Off
magic_quotes_gpc = Off
default_charset = Shift_JIS
mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
tuka | 09/16/05 21:02 | 編集
UTF-8では
私はLnux版Oracleを使ったことがないもので、その点はよくわからないんですが
UTF-8でOracleにアクセスできるなら
output_buffering = On
output_handler = mb_output_handler
magic_quotes_gpc = Off
default_charset = Shift_JIS
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
こうしたほうがいいと思います。
internal_encodingは、EUC-JP系のOSはEUC-JP、それ以外はUTF-8が
僕はいいと思います。

わかっておいでと思いますがinternal_encoding=UTF-8にすると、
スクリプトはUTF-8で書かなくてはだめですけどね。
sg | 09/16/05 21:54 | 編集
返事ありがとうございます。
UTF-8にてやってみたのですが、やはり文字化けします。またORACLEの文字コードがSJISなので可能であれば
「internal_encoding」は「sjis」でやりたいと思ってます。
今からORACLEの文字コードを変更するのは現実的ではありません。

もし何か分かりましたらまたアドバイスしていただけないでしょうか?宜しくお願い致します。
tuka | 09/20/05 16:20 | 編集
SJISにするということ
SJISにするっていうことは、文字列操作をするたびに、
ご自身でスクリプトによりデータチェックするということじゃないでしょうか。
これは、単純なスクリプトでは不可能じゃーないんですが、
少し複雑なスクリプトだと、ものすごい面倒じゃないかと思います。

また、OracleがSJISだからということなら、internal_encodingをUTF-8にしておいて、DBへのアクセスのみSJISという選択もできます。
しかし、これについても全SQL文・全クエリー結果を、SJISとの相互変換する関数をラップするなどしなければならず、けっこう面倒です。

実際、うちではMySQLでガンガンにPHPを使ってますが、
文字化けは(MySQL固有の問題を除き)おきません。
internal_encodingとDBの文字コードを合わせているからです。
結局、PHPではこの組み合わせの時、本領を発揮すると思います。

書かれた内容を総合すると、
・どうがんばってもphp.iniなどを書き換えただけでは回避不能だと思う。
・将来性も考えたらRedhatで使うならinternal_encodingはUTF-8がいいと思う。
・OracleをUTF-8対応に設定するか、もしくは、DBのみSJIS運用するならPHPのDB関数をラップする関数を自作してそれを利用することになると思う。

残念なんですが、こんな感じじゃーないでしょうかねー。
また、Win+ASPって手もありますね。これなら何も考えずに使えると思います。
sg | 09/20/05 16:39 | 編集
そういえばsanさんが
うちでリンクしているsanさんがLinux+Oracle+PHPという構成で開発してたと思います。
もしかすると、もっと根本的な解決策があるかもしれないので、そちらでも確認してみたらどうでしょう。
sg | 09/20/05 17:16 | 編集