人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

FLASHからgetURL()+POSTを使ってPHPに文字列を送ると日本語が文字化けしてしまいます。
サーバーの文字コードはEUC-JPです。
文字化けを回避する方法を教えてください。
あと、なぜ文字化けするのかも、できれば教えてください。

●質問者: rd_pub_ilc
●カテゴリ:ウェブ制作
✍キーワード:EUC-JP Flash PHP サーバー 回避
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kakicg
●27ポイント

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

print($_POST["xxxx"]);

ではなく

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

というように。

◎質問者からの返答

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

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

msg = "あいうえお";

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

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

echo "

$msg

";

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


2 ● kakicg
●27ポイント

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

myLoadVars = new LoadVars();
myLoadVars.name = "あいうえお";
myLoadVars.send("disp.php","POST");
<?php 
print(mb_convert_encoding($_POST["name"],"EUC-JP","UTF-8")); 
?>
◎質問者からの返答

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

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

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


3 ● kakicg
●26ポイント

ケータイの場合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")); 
?>

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

◎質問者からの返答

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

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

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

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

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

msg = "あいうえお";

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

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

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

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

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

$msg = mb_convert_encoding($msg, SJIS);

echo $msg;

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ