26

RFC 1738は URL の構文を指定し、それについて言及しています。

URL は、
US-ASCII コード化文字セットの印刷可能なグラフィック文字のみで記述されます。16 進数の 80 ~ FF のオクテット
は US-ASCII では使用されず、16 進数の 00 ~ 1F および 7F のオクテットは
制御文字を表します。これらはエンコードする必要があります。

ただし、これらのオクテットがどのコード セットを表すかについては述べていません。

RFC 2396は状況を改善しようとしているようですが、

ただし、非 ASCII 文字を含む元の文字シーケンスの場合、状況はより困難になります。複数の文字セットが存在する可能性がある場合、文字シーケンスを表すことを目的としたオクテット シーケンスを送信するインターネット プロトコルは、使用される文字セットを特定する何らかの方法を提供することが期待されます [RFC2277]。ただし、現在、この識別を実現するための一般的な URI 構文内の規定はありません。個々の URI スキームは、単一の文字セットを要求したり、デフォルトの文字セットを定義したり、使用する文字セットを示す方法を提供したりできます。

この仕様の将来の修正として、URI 内の文字エンコーディングの体系的な処理が開発されることが期待されます。

クライアントがエンコードされたオクテットを解釈する文字セットを決定できる、またはクライアントがエンコードに使用したものをサーバーが決定できる明確な方法はありますか?

ほとんどのサーバーのデフォルトは UTF-8 のように見えますが、これは指定されたものよりも事実上の選択のようです。

4

2 に答える 2

12

あなたの引用によると、URL は ASCII です。それで全部です。

URI OTOH、より大きな文字セットを許可します。あなたが自分で言ったように、通常はUTF-8です。

URL は URI のサブセットであることに注意してください。したがって、本当の問題は、これらのうちどれがブラウザに書き込むかということです。

URI を記述できると思いますが、ブラウザーは URL に変換するために最善を尽くす必要があります (これは HTTP/1.1 がサポートするものであり、AFAICR です)。非 ASCII 文字の場合、通常は UTF-8 をコーディングする 16 進コードを意味します。

于 2008-09-26T16:36:49.960 に答える
4

あなたが探している仕様はRFC 3987であると思います。これは、IRI (Internationalized Resource Identifiers) について説明しています。

于 2008-09-26T18:28:59.567 に答える