FLASHからgetURL()+POSTを使ってPHPに文字列を送ると日本語が文字化けしてしまいます。

サーバーの文字コードはEUC-JPです。
文字化けを回避する方法を教えてください。
あと、なぜ文字化けするのかも、できれば教えてください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2006/10/24 18:38:01
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:kakicg No.1

回答回数44ベストアンサー獲得回数3

ポイント27pt

Flashの文字コードがUTF-8(推測)なので、文字を受け取る側のPHPで文字コードを変換すればいいのではないでしょうか。

print($_POST["xxxx"]);

ではなく

print(mb_convert_encoding($_POST["xxxx"],"EUC-JP","UTF-8"));

というように。

id:rd_pub_ilc

回答、ありがとうございました。

実際に試しましたが、うまくいきませんでした。

  • Flash の内容 --

msg = "あいうえお";

getURL("test.php", "_top", "POST");

  • PHP の内容 --

$msg = mb_convert_encoding($_POST["msg"],"EUC-JP","UTF-8");

echo "

$msg

";

と、以上のようにし実行すると ?????? と表示されてしまいました。

2006/10/23 11:23:08
id:kakicg No.2

回答回数44ベストアンサー獲得回数3

ポイント27pt

getURL()の代わりにLoadVars クラスを使用してもだめですか?

	myLoadVars = new LoadVars();
	myLoadVars.name = "あいうえお";
	myLoadVars.send("disp.php","POST");
<?php 
print(mb_convert_encoding($_POST["name"],"EUC-JP","UTF-8")); 
?>
id:rd_pub_ilc

回答、ありがとうございます。

携帯用のFlashなので LoadVars(); は使えないんですよ。説明不足ですみませんでした。

ちなみに、Flash Lite 1.1 で開発しています。

2006/10/23 15:31:46
id:kakicg No.3

回答回数44ベストアンサー獲得回数3

ポイント26pt

ケータイの場合Shift_JISしか使えないんじゃなかったでしょうか?

PHPの方のコードをShift_JISで書き

<?php 
mb_language("ja");
mb_internal_encoding('Shift_JIS');
mb_http_input('Shift_JIS');
mb_http_output('Shift_JIS');

print(mb_convert_encoding($_POST["msg"], "Shift_JIS","UTF-8")); 
?>

などとするとどうでしょう?

id:rd_pub_ilc

回答していただきありがとうございます。

教えていただいた方法を試しましたが、うまくいきませんでした。

四苦八苦した結果、解決できました。

以下にコードを載せます。

//----- FLASH -----

msg = "あいうえお";

fscommand2("escape", msg, "msg");

getURL("test.php", "_top", "POST");

//-----------------

//----- PHP -----

$msg = urldecode($_POST["msg"]);

$msg = mb_convert_encoding($msg, SJIS);

echo $msg;

//---------------

なぜ上記のようなコードでうまくいくのか、よくわからないのですが。。。

長い間、お付き合いいただきありがとうございました。

2006/10/24 12:41:26

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

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

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

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

回答リクエストを送信したユーザーはいません