Perl CGIについてです。
文字列をエンコードしようと次のようにしてみました。
$val1 =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
$val2 =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
$va1は問題なくエンコードされ、デコードも元文字に戻ったのですが、
$va2のエンコード文字に不要な'25'が含まれるようになってしまいました。
例:「ガム」をエンコード >> %A5%AC%A5%E0
を期待していたのですが、結果は %25A5%25AC%25A5%25E0
と不要に'25'が含まれてしまいました。unpackの文が悪いのでしょうか?ご教示ください。
No.1
- 回答日時:
$val1と$val2は両方とも同じ“ガム”が入ってますか?
> 結果は %25A5%25AC%25A5%25E0
をみると、二重にエンコードしているように見えるんですが。
この回答への補足
早速の回答ありがとうございます。
$val1には「おやつ」が入り、$val2には「ガム」を入力しようとしました。
$val1の価は問題なく入ったのですが、$val2には上記のような結果となり、
デコードすると文字として「%%A5%AC%A5%E0」が表示され、本来の「ガム」が
表示できませんでした。
2重にエンコードというと$val1でunpackした結果が要因したのでしょうか?
大変助かります。ありがとうございます。
No.2ベストアンサー
- 回答日時:
> 重にエンコードというと$val1でunpackした結果が要因したのでしょうか?
ちがいます。
多分euc-jpを使っていると思いますが、それだと
“ガム”は A5 AC A5 E0 ですよね。
で、これを質問にあるエンコーディングで変換すると
%A5%AC%A5%E0
となります(期待している結果でもありますが)。
ここで、さらにこれに対して同じ処理を加えると
%25A5%25AC%25A5%25E0
になりますので、「二重にエンコーディングをかけていないか?」
と書いたのです。
#% は %25 に変換され、その他はそのままになります
ということなので
> デコードすると文字として「%%A5%AC%A5% E0」が表示され、本来の「ガム」が
ここでデコードしているつもりでもう一回エンコードしているんじゃないでしょうか?
変換しないでそのまま出すとどうなりますか?
この回答への補足
返信が遅くなってしまい申し訳ございません。二重エンコード、思い当たる
節があるので、ちょっと直してみます。 その結果、またお知らせしたいと思います。 アドバイス、大変感謝いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) awkのtoupper() 1 2022/10/21 20:39
- その他(メールソフト・メールサービス) outlookからの送信された件名が文字化けします 2 2023/04/18 14:29
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- Java Java 南京錠 2 2023/02/04 11:46
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/15 08:30
- その他(プログラミング・Web制作) URLのエンコードで日本語は16進数に変換されると学びましたが、16進数とひらがなや漢字が対応してる 4 2022/08/04 17:08
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- デスクトップパソコン ゲーミングデスクトップPCでマインクラフトなどの比較的負荷が軽いゲームを録画・編集・エンコードしてY 3 2023/02/09 21:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
htmlからcgiを自動的に起動させ...
-
number 改行が追加できない
-
フォームを再送信しますか?
-
CGIの設置が分かりません・・・
-
ディープフェイクを作成するサ...
-
cgi
-
cgi アクセス制限 エラー
-
perlで書いたcgiでsqliteの使い...
-
VBAで条件から範囲を指定して色...
-
500 Internal Server Error
-
3DCG
-
ホームページにメールフォーム...
-
CGIの記述について教えてくださ...
-
ホームページにCGIを設置したの...
-
ホームページにCGIを設置したの...
-
サーバーのエラーでおしえてく...
-
ホームページの事でおしえてく...
-
さくらサーバーにcgiフォームを...
-
ホームページでCGIのフォームを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで集計したい。
-
フォームを再送信しますか?
-
apacheでPerl CGIが作動せず、5...
-
ホームページでCGIのフォームを...
-
生成AI画像について
-
/bin/awk '{print $5}'ってどう...
-
入力フォーム(電話番号)
-
(フリーの)ツリー掲示版CGI、...
-
古ーくからフリーのtree.cgi掲...
-
VBAで条件から範囲を指定して色...
-
ホームページにメールフォーム...
-
一番簡単なCGI,掲示板の設置教...
-
CGIって何ですか?簡潔に教えて...
-
サーバーのエラーでおしえてく...
-
サイト訪問者の情報を取得したい
-
htmlからパラメータで、cgiに渡...
-
CGIで出力するhtmlの<!DOCTYPE ...
-
cgiからsendmailを送信で文字化け
-
POSTメソッドの最大容量について
-
ホームページにCGIを設置したの...
おすすめ情報