• ベストアンサー

URLの文字エンコードについて

とあるサイトに ”スピッツ” とクエリーをとばしたところ、”スピッツ”が”%83X%83s%83b%83c”と文字エンコーディングされました。しかし、これは何でエンコードしているのか分かりません。 こういうときはどういうふうに調べれば何でエンコードしていると分かるのでしょうか? また、これは何でエンコードしているのでしょうか? 教えてください。

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

  • ベストアンサー
  • Eighty8
  • ベストアンサー率84% (21/25)
回答No.1

SJISでエンコードされていますね。 ・「ス」はSJISで8358 ・83はそのまま%の後ろに数字をつけて%83 ・58はASCIIの文字で表現できるのでX よって%83Xになる、といった具合です。 何でエンコードされているかは、文字コードから当たりをつければ良いのではないでしょうか。通常SJIS,EUC,UTF-8くらいですので。

参考URL:
http://www.bousaid.que.jp/software/urlencode/index.php
marucha
質問者

お礼

ASCIIで省略できるときは省略するんですね。知りませんでした。 ご回答ありがとうございます。

関連するQ&A

  • 文字エンコードについて

    文字エンコードについてなのですが、 コンピュータでは文字1つ1つに何バイトかの値が割り振られていて、 それを翻訳的なことをして表示していることがわかりました。 で、エンコードによって同じ文字でも内部の値が異なっているということもわかりました。 そこで質問なのですが、私はPHPを勉強しています。 それで文字列のエンコードを変更する関数があるのですが、それで文字列をUnicodeに変更したとします。 でも保存するときにANSIを選択した・・・これってどういうことなんでしょう? しかも、IE等のブラウザ上からも「表示」→「エンコード」→「Shift_JIS」と選択できます。 プログラムの上からのエンコーディング テキストエディタからのエンコーディング これはどちらが優先されているのでしょう。 エンコーディングについて詳しいサイトなどありましたらお願いします。

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

    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の文が悪いのでしょうか?ご教示ください。

    • ベストアンサー
    • CGI
  • 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ページがあれば教えてください。

    • ベストアンサー
    • Perl
  • URLデコードした文字列からURLエンコード

    よろしくおねがいします。 質問掲示板の中にある検索で質問掲示板の中身を検索した時に、同時にGoogleでも検索しようとおもっています 初めにフォームから得られたクエリーをデコードして &jcode'convert(*val, 'sjis'); に変換しました。 これで得た文字列で質問掲示板の中身を検索します。 つぎに、この文字列をエンコードしてGoogleに渡そうと思いましたが、ここでつまずいてしまいました。 &jcode'convert(*sarchword,'euc','sjis'); #---------- $sarchword =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $sarchword =~ s/(\W)/'%'.unpack("H2", $1)/ego; #---------- #↑このどちらかを行ってから $sarchword =~ tr/ /+/; これでできると検索して出てきたのですが、それでも正しい結果を得ることができず、文字コードの変換も'euc'を'sjis'等といろいろ変換してみてもできずに困っています。エンコードした結果の文字コードがまったく別のコードになってしまうみたいなのです。 たとえば「あいうえお」と検索したときに、上の方法でエンコードすると「%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa」という値になります。 正しい結果を得る方法を教えていただけないでしょうか。 意味がわかりませんでしたら、再度説明いたしますのでよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • FirefoxQuantumのエンコード

    こんばんは。Windows7 64ビット、FirefoxQuantum 64ビット版最新、ウイルスバスター使用です。 あるサイトでの文字表示がぼやけていて、こういう時、過去文字エンコードをいじったら戻る事が何度かあったので、メニューバーの表示(V)→テキストエンコーディング(C)で変更しようとしたら、テキストエンコーディングが灰色で選択できない。 ツールバー上右端の Ξ →その他→テキストエンコーディングも同様。Firefoxセーフモードでも駄目。 ですが、webページやサイトによっては、選択できる(灰色ではない)。 エンコードは文字化けした時くらいしか弄らないので、あまり使用しないのですが、 Quantumにしてから初めて使用しようとして、webページやサイトによって、選択できないと知りました。 これって、自分だけでしょうか?セーフモードでFirefoxを起動しても同じなので、アドオンは関係なさそうです。 解る人、教えて下さい。お願いします。 PS.返信遅くなりましたら申し訳ありません。残業が不規則なもので。

  • 文字列は大文字のまま、UTF-8エンコードの英字だけ小文字にしたい

    下記の方法でUTF-8エンコードをしたときに、 コードの英字が大文字になってしまい困っています。 use Encode; $str = "HOGEホゲ" $str =~ s/(\W)/'%' . unpack("H2", $1)/eg; print "$str"; 現状のエンコード後)HOGE%E3%83%9B%E3%82%B2 希望のエンコード後)HOGE%e3%83%9b%e3%82%b2 半角英数字(HOGE)は大文字のままで、 エンコードだけを小文字で書き出す簡単な方法はありますでしょうか。 (小文字でないと受け付けてくれないサイトに飛ばしたいため) 現状は正規表現でAからZまで26行繰り返しています。 $str =~s/\%([A-Z0-9]{1})?A/%$1a/g; ~ $str =~s/\%([A-Z0-9]{1})?Z/%$1z/g; よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • URLエンコードについて

    「 † 」 の文字をUTF-8 でURLエンコードした時の値が2種類あるんでしょうか。 以下の2つのURLエンコードした文字を %EF%BC%8D %E2%80%A0 URLエンコード/ デコードの結果を出力してくれる こちらのサイトと https://www.tagindex.com/tool/url.html こちらのサイト https://tech-unlimited.com/urlencode.html で結果が異なるみたいです。 なぜこういった結果が異なる状況が生まれるのでしょうか そして正しいのはどちらなのでしょうか

  • URLエンコード  文字数について

    URLエンコード  文字数について <a href="mailto:info@example.com?subject=%96%e2%82%a2%8d%87%82%ed%82%b9">メールはこちらへ</a> などHTMLの記述で文字化けを防ぐために下記文字列のように %96%e2%82%a2%8d%87%82%ed%82%b9 日本語をエンコードしていますが、ある一定以上の文字数を入力すると、そのリンクをクリックしてもメールソフトが起動しません。 文字数の制限があるのでしょうか? 詳しい方いらっしゃいましたら教えて下さい。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • OSとURLエンコードの関係

    メールに参照としてサイトのURLを記載することがありますが、URLをクリックしても WEBブラウザが起動しないことがよくあります。メールS/WはThunderbirdです。 例: http://www.….jp/index.php?%A5%C1%A5%A7%A5%C3%A5%AF%A5%EA%A5%B9%A5%C8 ※アドレスは編集済 質問(1) 下記の通り推測しておりますが、考えは正しいでしょうか? 考えられる要因としては、全角文字を含むアドレスをサーバがURLエンコードするとOSに 依存したアドレスが生成され、例えば、UNIXサーバでURLエンコードされたアドレスをWindowsの クライアントが開く場合、Windowsがデコードする文字コードが異なるため、正しくデコードできず、 ブラウザが起動しない。 のではないかと考えております。 質問(2) OSのURLエンコード、デコードの関係は下記で正しいでしょうか? また、質問(1)が正しいとすると、文字コード同士の互換性はないということでしょうか?  UNIX … EUC  MAC … SJIS  Windows … Unicode 質問(3) 質問(1)の解決方法はありますでしょうか? 長くなりましたが、ご教授のほどよろしくお願いいたします。

  • C++でURLのエンコード

    文字列をShift-JisとUTF-8とEUCにエンコードしたいのですが、エンコードしてくれる関数とかC++でないですかね? やっぱり1バイトずつ調べて自分で変換するしかないのでしょうか? どなたかご教授お願いします。