- ベストアンサー
FlashとPHPを使ったチャット
- FlashとPHPを連動させたチャットを作成する際に、全角カナの一部や全角記号の一部が正しく表示されず、半角ローマ字に変換されてしまう問題が発生しています。
- サイトに載っているソースプログラムをそのままコピーして作成し、実装させましたが、原因がわかりません。
- 使用しているバージョンはWindows XP Home、Macromedia Flash MX、PHP 5.2です。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
そのローマ字に変換されてしまう文字がうまくURLエンコードされなかったのが要因かと思われます Flash側の System.useCodepage = true; を削除して、PHP側は if ($_POST['msg']){~ の1行を if ($_POST['msg']){ $name = mb_convert_encoding($_POST['name'], "UTF-8", "auto"); $msg = mb_convert_encoding($_POST['msg'], "UTF-8", "auto"); array_push($lines, "{$name}\t{$msg}\t$time\n"); } に変更し、文字コードをUTF-8ベースにしてしまいましょう 確認の際は、一度チャットログ用のテキストを削除してから空のファイルをアップロードして下さい これで意図しない文字列に変わってしまうことは回避できると思います 次に前途内容のままでは以下の記号 「 " 」 「 ' 」 「 \ 」 を文字列として表示するために先頭へ \ がプラスされしまいます 例 「"\5,000"」 → 「\"\\5,000\"」 なのでこれをFlash側で戻してあげます ASが記述してあるフレームに function escapeCut(str) { str = str.split('\\"').join('"'); str = str.split("\\'").join("'"); str = str.split("\\\\").join("\\"); return str; } という\記号によるエスケープ削除用の独自関数を記述し、 sl.onLoad = function() 内の log_txt.text = this.log; user_txt.text = this.user; を log_txt.text = escapeCut(this.log); user_txt.text = escapeCut(this.user); とすればうまくいくと思われます
お礼
丁寧なご回答ありがとうございました♪ 言われたとおりにやってみたところ、万事うまくいきました。 これから、教えていただいた事を理解して行こうと思います。 ほんと、ありがとうございました^^ ご迷惑とは思いますが、またよろしくお願いしますm(_ _)m