• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[Perl] unpackで不要文字にエンコード)

[Perl] unpackで不要文字にエンコード

このQ&Aのポイント
  • Perl CGIについて、文字列をエンコードする方法についての質問です。
  • $val1は正しくエンコードされ、デコードも元の文字に戻った一方、$val2のエンコード文字に不要な'25'が含まれてしまいました。
  • 不要な'25'が含まれる原因や、unpackの文に問題があるのかどうかについて教えてください。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> 重にエンコードというと$val1でunpackした結果が要因したのでしょうか? ちがいます。 多分euc-jpを使っていると思いますが、それだと “ガム”は A5 AC A5 E0 ですよね。 で、これを質問にあるエンコーディングで変換すると %A5%AC%A5%E0  となります(期待している結果でもありますが)。 ここで、さらにこれに対して同じ処理を加えると %25A5%25AC%25A5%25E0 になりますので、「二重にエンコーディングをかけていないか?」 と書いたのです。 #% は %25 に変換され、その他はそのままになります ということなので > デコードすると文字として「%%A5%AC%A5% E0」が表示され、本来の「ガム」が ここでデコードしているつもりでもう一回エンコードしているんじゃないでしょうか? 変換しないでそのまま出すとどうなりますか?

goofy194
質問者

お礼

変換しないでやったら、問題なく表示されました。 ありがとうございました。

goofy194
質問者

補足

返信が遅くなってしまい申し訳ございません。二重エンコード、思い当たる 節があるので、ちょっと直してみます。 その結果、またお知らせしたいと思います。 アドバイス、大変感謝いたします。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

$val1と$val2は両方とも同じ“ガム”が入ってますか? > 結果は %25A5%25AC%25A5%25E0 をみると、二重にエンコードしているように見えるんですが。

goofy194
質問者

補足

早速の回答ありがとうございます。 $val1には「おやつ」が入り、$val2には「ガム」を入力しようとしました。 $val1の価は問題なく入ったのですが、$val2には上記のような結果となり、 デコードすると文字として「%%A5%AC%A5%E0」が表示され、本来の「ガム」が 表示できませんでした。 2重にエンコードというと$val1でunpackした結果が要因したのでしょうか? 大変助かります。ありがとうございます。

関連するQ&A