人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

URLエンコードは何故必要なのでしょうか?RFCで決まっていると聞いたのですが、なぜRFCでそのように規定されているのかが分かりません。そのように決められた歴史的、技術的な背景を教えてください。
それらを知ることのできる資料やホームページを教えていただけるだけでも大変助かります。
よろしくお願いします。

●質問者: わけん
●カテゴリ:コンピュータ インターネット
✍キーワード:RFC URL エンコード ホームページ 技術
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● ssk50
●30ポイント

こちらのサイト参考になりますでしょうか

↓↓

http://www.kinet.or.jp/hiromin/cgi_introduction/appendix/url_enc...

◎質問者からの返答

回答ありがとうございます。

参考にはなったのですが、自分の疑問はまだ晴れません。

うまく自分の疑問を説明できてないのですが...

もうしわけないです。


2 ● e55ind
●30ポイント

2バイトコード(漢字)や記号を扱えないからです。

英語圏でシステムが出来上がったので、そういうところに考慮がなかったので、

2バイトコードをエンコードして、無理やり1バイトコードにして

使えるようになったのです。

最近は、http://h.hatena.ne.jp/人力検索

URLも受け付けるようになりましたが、

昔は、人力検索なんて受け付けないので、エンコードして処理されてました。

◎質問者からの返答

回答ありがとうございます。

もうちょっと先が知りたいです。

なぜ、2バイトコードを扱えないのでしょうか?

2バイトコードを送ろうとすると、どんな不具合が起きて、なぜその不具合が起こるのでしょうか?

そこが気になります。


3 ● uwao
●30ポイント

URL欄に日本語や記号などを記述するとURLとして判断されず、リンク切れになる場合があります。

検索画面のキーワードやE-mailアドレスなどをプログラムの末尾に掲載する場合、エンコードする事でURLとして判断されます。

例えば

http://・・・/aaa.cgi?key=エンコード って何?

のようなURLでは、keyが途中で切れてしまいます。

また、テキストメール等に掲載してもリンクが途中で切れてしまいます。

◎質問者からの返答

回答ありがとうございます。

説明不足で、すいません。

リンク切れが起きてしまう、原因が知りたいです。

サーバーorアプリが、○○という仕組みで動いているためリンク切れが起きます

...っというような答えが知りたいです。


4 ● kn1967
●50ポイント

RFC の栄えある 1 番は、なんと1969年4月!! その後1969年10月に

文字を電送する場合はASCIIコードを用いましょうというRFC20勧告が出され、

これが全てのベースとなっている。


通信速度の向上や通信網の整備に伴って、単純な英単語だけでなく、

ワープロのデータなども送るようになり、情報と制御データを区別する必要が、

出てきて、紛らわしいものには%をつけて区別しようという勧告が1994年の

12月にだされた。割りと最近と言えるけど、これでも既に15年も経っている古いもの。

(詳細はRFC1738 に詳しく書かれているが、長くなるのでリンク先を参照されたし。)


現代では、

ネットワーク上を流れる文字データはUTF-8/16などに固まりつつあるけれど、

通信の根幹を成す部分の抜本的改革は起こらず、今もなお8bitベースのまま、

この先いつまで続くかも判らないのが現状であり、URLエンコードはまだまだ、

必須ということになる。(新しい勧告として 2005年1月に RFC3986 が、

出ているがURLエンコードが必要な事に変わりは無い。)


RFCの日本語訳は下記に沢山あります。

http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html

◎質問者からの返答

回答ありがとうございます。

まずは、歴史的に8bitベースで出来たわけですね。最初からマルチバイトコードを意識していれば、Shift-JISだろうが、UTF-8/16だろうが送れたが、そうはならなかったと。

それは理解できたのですが、8bitベースで解釈しているものがshift-jisのものを読み取ろうとした場合、

どのような不具合が起こるのでしょうか?そして、それは何故起こるのでしょうか?

そういったところが、知りたいです。


5 ● sibazyun
●50ポイント

「どのような不具合が起こるのでしょうか?そして、それは何故起こるのでしょうか?」

・・・#1の方の上げた資料の一部に次のようにあります。

>D.1.2 デコードする方法

> ・・・

>?改行は「復帰(0x0D) + 行送り(0x0A) 」なのでプラットフォームに従った改行に変換する.

で、2バイト文字(漢字)ならば、第2バイト目が0Dの文字があります。そうすると、

(エスケープしていないと)それは1バイト目のASCII+「復帰」とみなされてしまいます。

このように、「エスケープさせること」で、第2バイトを組にしたデコードを確実にさせます。

◎質問者からの返答

おぉ。自分の求めていた、そして何となくイメージしていた答えです!

だいぶ疑問が解けましたー...っと思っていたのですが、

kn1967さんの回答で、また違った様相を呈してきました。

何はともあれ、回答ありがとうございます!


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ