• ベストアンサー

urlencodeでエンコードされる文字コードが変わる

内容が同じSJISとUTF-8のソースを実行すると、それぞれurlencodeでエンコードされる文字コードが変わってしまい困っています。 SJISでもUTF-8と同じようにエンコードをしてパラメタをサーバーに渡したいです。 例: 「株」というキーワードでエンコードすると SJISの場合:%8A%94 UTF-8の場合:%E6%A0%AA urldedodeの結果はどちらとも「株」となる。 php.iniのmbstringを一通りいじってみましたがうまくいきません。 どなかた詳しい方ご教授頂ければと思います。

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

  • ベストアンサー
noname#249320
noname#249320
回答No.1

キーワードはソースファイル内に直接記述されているのでしょうか? そうだとすると, urlencode の動作としては RFC1738 に規定されている通りそれで正常です。 >SJISでもUTF-8と同じようにエンコードをしてパラメタをサーバーに渡したいです。 ということでしたら, SJIS を一旦 UTF-8 に変換してから urlencode すれば解決できるのでは。 SJIS のソース内で, $key = mb_convert_encoding("株", "UTF-8", "Shift_JIS"); $ekey = urlencode($key); として処理すればよいかと。 # 本来は文字コード SJIS のソースコードは推奨されないのですが・・・

ton_jiru
質問者

お礼

回答ありがとうございます。 mb_convert_encodingでもうまくいかないので、Jcodeで行ったらうまくいきました。 更にiniが悪さをしていました。 お騒がせしました。

関連するQ&A