2009-07-07 14 views
2

私のHTMLの中で、Web URLの "%20"の代わりに文字実体参照 " "を使用できますか?スペースを含むURLで%20を&nbspに置き換えることはできますか?

どちらもスペースですか?

+2

あなたが最初の場所でこれをやりたいと思っ可能どのような理由があるだろうか?私は知りたくない気がします... – Welbog

+0

何をしようとしていますか? –

+0

@Pup:ここでの問題は、URLとHTMLが異なるルールに準拠した2つの完全に別個のものであることです。あるシステムのルールが、他のシステムと一緒に使用されているという理由だけで、自動的に他のシステムに対しても当てはまると想定することはできません。 – Tomalak

答えて

14

短い答えは、両方とも「スペース」を表すために使用されていますが、とは異なるスペースを表します。

%20は、バイトでエスケープするURLです。これは、URLで使用する可能性のあるほとんどすべてのエンコーディングの平易な古い領域に相当します。

 は、実際のUnicode文字160(およびラテン1別名また、ISO-8859-1)を指すHTML文字参照です。これはまったく別のスペースキャラクター、つまり「非破壊スペース」です。同じように見えますが、それらは異なる文字であり、サーバーが同じように扱うことはありません。

+0

これらの2つのタイプのスペース表現の違いを除いて、仕様または実用的実装のいずれかでHTML文字エンティティ参照がURLで許可されているかどうか知っていますか? – Matt

+0

@Mattはい、いいえ。 HTML文字エンティティ参照は、HTML文書*内のURL *で使用できます。実際、HTML文書のURLにあるアンパサンドは、HTMLエスケープされているはずです。 "http://example.com/foo?bar = 1&baz = 2'"をHTMLに入れるのは実際には無効です。それは "" http://example.com/foo?URL = "&"が含まれている場合、URL自体には単に '&'が含まれています。 '。 –

+0

@Mattほとんど忘れてしまった:MSIEの古代版は、フォーム提出に使用されている文字セットで表現できなかった文字のフォーム提出でHTML文字エンティティ参照を使用しようとしていると思います。それはMSIEにあまりにも驚くべきことではありません。 –

6

いいえスペースも(技術的に)スペースではありません。どちらもは異なる方法でのスペースを表します。あなたのURLにスペースやスペースを持たないように努力してください。多くの人が、スペースを_または - と置き換えるために、よりエレガントな(私を含む)と感じます。

+1

あなたの視点によっては、それはあまり正しくありません。 '%20'は空白を表しますが、 ' 'は技術的に別の文字である*非改行*スペースを表します。したがって、URLでHTMLエスケープを使用することをお勧めしますが、URLの意味を変更して、ある文字を別の文字に置き換えるため、これは機能しません。 –

+0

私の答えとどのように違いますか? – Sampson

+0

単に異なる方法でスペースを表現するのではなく、異なるスペースを表現するだけです。 –

4

No. & nbsp; HTMLの非分割スペースエンティティです。このエンティティは、ファイルシステムやURLが指し示す可能性がある場所で使用されている場合は意味を持ちません。 URLはHTMLでエンコードされません。

+0

少なくともいくつかのファイルシステムでは、ファイル名に改行しないスペースを入れることができます。これはおそらく良い考えではありませんが、 "このエンティティはファイルシステムで使用されても意味がありません"と言ってもあまり意味がありません。それはちょっと別のキャラクターです。 (あなたは、実体参照を参照 している場合、ブラウザが対応する文字を実体参照に変換するの世話をするだろうように、彼は、HTMLでこれを使用して話していた。) –

2

%20はURLエンコーディングで得られるものなので、URLで使用する場合はこれを使用する必要があります。

& nbsp; HTMLエンティティです。これは、HTMLドキュメント内の '非分割領域'に使用する必要があるものです。

2

いいえ、URLにはありません。あなたは何ですかすることができます doは、URLのテキスト表現のスペースを置き換えます。

ので、代わりの:

<a href="http://some.site/doc%20with%20spaces">http://some.site/doc%20with%20spaces</a> 

あなたが持つことができます。

<a href="http://some.site/doc%20with%20spaces">http://some.site/doc&nbsp;with&nbsp;spaces</a> 
+0

なぜ ' は'その誰もが知っています私は下のサンプルで表示されていない?それまでは、私は確信しています... – Tomalak

+1

スペースに変わったので! & nbspを使用してください。それが正しく表示されるようにします。 –

+3

スナップ!それが原因だと本当に思っていますか? ;-)真剣に - 私は、 "コード"セクションがその内容をそのまま表示すると思った。そして私はそれが最近までそれをしたと思った。私は '& NBSPを書く場合は今;'、私はこれは、サーバーがHTMLを話すことはありません – Tomalak

0

どちら空間です。自動的

WebSite/Web%20Page.aspx 
にユーザーをナビゲートしますこれであなたは、スペースを使用するはずのが、あなたはそれを避けることができない、これまでどのような理由であれば、あなただけの...

<a href="Web Page.aspx">Hey there</a> 

を行うことができるはず...クリック

0

ほとんどの人は、URLのファイル名にスペースを絶対に入れないようにしています。彼らは毎回深刻な頭痛を与えるので、そうしようとします。

URLにスペースを入れたい場合は、%20でエンコードする必要があります。

& nbspは、ページの表示方法を知るためにブラウザによって使用されます。この情報は、表示にのみ使用されます。 %20は、Webページを訪問者に転送するために必要なすべてのものを管理するサーバーに送信されます。サーバーはhtmlを話さないので、サーバーは& nbspをfilenameの通常の部分として解釈し、foo  バーと呼ばれるファイルを検索します。このファイルは見つかりません。 Webサーバーは、&がURLの可変部分を開始し、ページfooだけを検索し、nbsp変数とnbsp変数バーを生成しようとしますが、それらの値を参照したいと考えるでしょう。すべてのWebサーバーでは、 のURLを処理できません。

+1

...いくつかの点で表示されますことを恐れ、彼は彼のHTMLでこれを使用して当接し話していました。ブラウザ*はURLを含む属性の文字参照を解釈するため、 は改行されないスペースになります。サーバーは&(またはその問題のために "nbsp;")を決して見ません。 –

+0

これで、サーバーには通常の空白が表示されます。それはまた悪いことです:) – Janusz

+0

いいえ、それは改行されない空白文字を見るでしょう。通常のスペースとは異なるキャラクターです。 –

関連する問題