アプリ版:「スタンプのみでお礼する」機能のリリースについて

PHPのcURL関数を使って、POSTしているのですが、POSTの値をUTF-8からSJIS-winに変換して送信したところ、受け側で文字化けしてしまいます。
※ちなみに、ソースはUTF-8です。

ソース的には、ざっくり以下のような感じです。
$params = 'name=' . $name;
$params .= '&kana=' . mb_convert_kana($kana, 'k');
$params = mb_convert_encoding($params, 'SJIS-win', 'UTF-8');
・・・
$urlConnect = curl_init();
・・・
curl_setopt($urlConnect, CURLOPT_POSTFIELDS, $params);
$res = curl_exec($urlConnect);

受け側を見ると、
mb_detect_encoding($_POST['name'])
が、「UTF-8」となっていました。

解決するポイントでも構いませんので、ご指導お願い致します。

A 回答 (2件)

mbstring.encoding_translation が On になっていませんか?


mbstring.http_input, mbstring.http_output 辺りも確認してみてください。

cf.) http://jp.php.net/manual/ja/mbstring.configurati …

今回とはあまり関係ないかもしれませんが、urlencode も通しておくことをお勧めします。
半角かなについては承知の上で使っているなら、問題ないと思います。
    • good
    • 0
この回答へのお礼

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

まさに、mbstring.encoding_translation が On になっていました。
こちらを Off にすることで文字化けが解消しました。

どうもありがとうございました!

昨日ご回答頂きました方もどうもありがとうございました!

お礼日時:2010/01/07 10:34

ざっくり調べたところ、UTF-8のBOMが悪さをしているようです。



対応としては、BOMを取り除くファンクションを作る、BOMの付加されないエディタを利用するといった方法がググれました。
    • good
    • 0
この回答へのお礼

早速回答ありがとうございます!

BOMを除くファンクションを作って試してみましたが、下記のやり方では状況は変わりませんでした。
BOMを調べると、「UTF-8形式のファイルを読み込んだ場合、ファイルの先頭データがBOMというのになっている場合がある。」と書いてあり、
今回のケースでは、どのタイミングで対応すれば良いのかがわかりませんでした。
かなり勘違いしているかもしれませんが、どのタイミングで対応すべきかご教授いただけると助かります。

// BOM除去ファンクション
function delete_bom($str) {
if (ord($str{0}) == 0xef && ord($str{1}) == 0xbb && ord($str{2}) == 0xbf) {
$str = substr($str, 3);
}
return $str;
}

//先程のソースに、BOM除去ファンクションを呼び出す
$params = mb_convert_encoding($this->delete_bom($params), 'SJIS-win', 'UTF-8');


何度もすみませんが、宜しくお願い致します。

お礼日時:2010/01/06 19:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!