- ベストアンサー
urlエンコード後の文字コードは何?
$str = "%E3%82%84%E3%81%BE+%E3%81%8B%E3%82%8F"; $str =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack("C", hex($1))/eg; こうやってurlエンコードすると、以下のようになります。 「やま+かわ」 1.この「やま+かわ」というのは文字コードは何なんでしょうか? 2.Jcode.pmなどのライブラリを使わずに、utf-8で統一したCGIを書きたいのですが、この文字列をどうすればいいでしょうか。コツを教えてください。 3.あと、+を半角スペースに置換する以外に なにか特別なルールはありますか? 4.参考になるWebページがあれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
デコードして得られる文字列の文字コードは、エンコード前の文字列の文字コードです。 入力データがSJISならSJIS、EUC-JPならEUC-JPです。 従って、他に入力データの文字コードを指定するヒントがないのなら、Jcodeなどで行っているように、文字データから文字コードを「推定」する必要があります。 Jcode.pmを使いたくない理由が不明ですが、Jcodeを使わないのであれば、当然ながら文字コードの自動判定、UTF-8への変換ロジックを自力で実装する必要があります。 外部プログラムを使用してよいならnkfなどを呼び出すのもよいでしょう。
その他の回答 (1)
- fmoon_yoshi
- ベストアンサー率25% (1/4)
うろ覚えな回答で申し訳ございません。 先ず >urlエンコードすると と有りますが貴方がやってらっしゃるのは デコードではないでしょうか? つまり逆に2の答えがデータをエンコードすれば いいという答えになると思います。 unpackという関数がありますのでそれを 使われては如何でしょうか? 下記に参考となるURLを付けておきます。 上下いたしましたが1については基本的に 2バイト文字はsjisでデータは出てくると思います。 但し、何処かで文字コードを指定していると話は 変わりますが…。
お礼
ありがとうございまーす。
お礼
ありがとうございます。 たいへんに納得です。