- 締切済み
チャットでログに書込まれる文字
FlashインターフェースのPHPで作られたチャットをレンタルサーバ上に設置しましたが、チャットログ(txtファイル)に書き込まれる一部の文字(表、予、申、能、十、ソなど)が、文字化けしてしまいます。 そのログテキストファイルを、リアルタイムにチャット画面に表示しているので、当然、文字化けで表示されます。 EUC-JPでソースコードを保存してもダメでした。 一番良いのは、ソースコード内で駆使して文字化けを直せるといいのですが・・・ しかし、ローカル開発環境で動作させたときは正常に表示されます。 また、他のレンタルサーバ環境だと、やはり正常に表示されました。 もちろん、これらは同じ設定(パーミッションなど)での結果です。 これはもう、レンタルサーバ業社のサーバ環境に問題があるんじゃないかと思いますが、どうでしょうか? しかし、レンタルサーバ業社にクレームつけても、はねつけられそうです。 サーバ環境でこういった現象が起きているとしたら、どういうことが考えられますか? また、どういった対処方法があるでしょうか? 困っています。。。 <業社のサーバ環境> Fedora Core 2 Apache2.0.50 PHP 4.3.10 (ionCube PHP Accelerator使用) Perl 5.8.3
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 50100
- ベストアンサー率28% (99/351)
回答No.1
チャットプログラムが吐き出すログの文字コードとチャットを設置しているページの文字コードを合わせることは不可能なのでしょうか?metaタグのcharsetの部分をチャットプログラムが使用している文字コードと一致させることが出来たら解決するように見えます。
お礼
ご回答ありがとうございました。 結果的に自己解決に至りました。 PHPプログラム内では、HTML文は一切記述してなく、よってmetaタグやcharsetも使ってなくて、ほとんどログテキストファイルのオープン~追加書込み~クローズ処理、変数渡しなどに終始しており、C言語のようなプログラムコードです。 Flash上のテキストボックスの変数 $message に代入された文字列を、PHPプログラムでログテキストファイルに書き出しているのですが、PHPプログラム内のコードで以下のように書いています。 $msg1 = str_replace ("\n"," ", $message); $msg2 = stripslashes ($msg1); echoで変数内の値を表示してデバッグしてみたところ、$message、$msg1は文字化けしていませんでしたが、$msg2で文字化けしていました。 $msg2の値をログテキストファイルに追加書き込みして、そのログテキストファイルを画面表示の変数に渡しているので、文字化けして表示していたというわけです。 stripslashes()関数は良くわからないのですが、この関数をコメントアウトして、$msg1をそのまま渡すことにしました。 その結果、文字化けは改善し、問題なく動作することとなりました。 わざわざアドバイス下さってありがとうございました。