• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:FlashとPHPを使ったチャット)

FlashとPHPを使ったチャット

このQ&Aのポイント
  • FlashとPHPを連動させたチャットを作成する際に、全角カナの一部や全角記号の一部が正しく表示されず、半角ローマ字に変換されてしまう問題が発生しています。
  • サイトに載っているソースプログラムをそのままコピーして作成し、実装させましたが、原因がわかりません。
  • 使用しているバージョンはWindows XP Home、Macromedia Flash MX、PHP 5.2です。

質問者が選んだベストアンサー

  • ベストアンサー
  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.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); とすればうまくいくと思われます

kanezin
質問者

お礼

丁寧なご回答ありがとうございました♪ 言われたとおりにやってみたところ、万事うまくいきました。 これから、教えていただいた事を理解して行こうと思います。 ほんと、ありがとうございました^^ ご迷惑とは思いますが、またよろしくお願いしますm(_ _)m

関連するQ&A