36

私のウェブサイトは、1 つのことを除いてXHTML Transitional に準拠しています。URL の & (アンパサンド) は、&

つまり、私のページのすべての URL は通常次のようになります。

<a href="http://www.example.org/page.aspx?x=1&y=2">Foo</a>

しかし、XHTML バリデーターは次のエラーを生成します。

一般エンティティ「y」のシステム識別子を生成できません

...そして、URLを次のように記述したいと考えています:

<a href="http://www.example.org/page.aspx?x=1&amp;y=2">Foo</a>

問題は、Internet Explorer と Firefox が URL を正しく処理せず、y パラメータを無視することです。このリンクを機能させて正しく検証するにはどうすればよいですか?

ブラウザーが厳密にエンコードされた XHTML URL で動作しない場合、XHTML ページを作成することは不可能に思えます。

実際に見てみたいですか?これら 2 つのリンクの違いを確認してください (そのままコピーして貼り付けてください)。

http://stackoverflow.com/search?q=ff&sort=newest

http://stackoverflow.com/search?q=ff&amp;sort=newest
4

5 に答える 5

57

私はちょうどこれを試しました。あなたがしようとしたことは正しいです。HTML では、リンクを記述する場合、&文字は asとしてエンコードする必要があります。パラメータ値にアンパサンドを含めたい場合はas&amp; のみをエンコードします。リンクを含む単純な HTML ページを作成したところ、問題なく動作 しました。意図したパラメーターを受け取り、ソースは検証に合格しました。&%26<a href="Default2.aspx?param1=63&amp;param2=hel">Click me</a>default2.aspx

&asのエンコーディングは&amp;、リンクではなく HTML で必要です。ブラウザーが&amp;リンクの HTML ソースで を検出すると、ブラウザーはそれをアンパサンドとして解釈し、リンク ターゲットは意図したとおりになります。URL をブラウザのアドレス バーに貼り付けた場合、URL が HTML であるとは想定されず、含まれている可能性のある HTML エンコーディングを解釈しようとしません。これが、ブラウザーにコピー/貼り付けする必要があると提案されたリンクの例が機能しない理由であり、それらが機能するとは思わない理由です。

実際のコードをもう少し投稿していただければ、何が間違っているかを確認できるかもしれませんが&amp;、アンカー タグで を使用することで、正しい方向に向かっているように見えます。

于 2008-11-08T21:48:49.660 に答える
6

それは私のせいでした: ハイパーリンク コントロールは既にエンコードされ&ているため、URLhttp://foo?x=1&amp;y=2は次のようにエンコードされました。http://foo?x=1&amp;amp;y=2

あなたが述べたように、通常、&ampURL内はブラウザによって正しく処理されます。

于 2008-11-08T23:28:31.627 に答える
5

ページ内の URL&amp;の代わりに使用できます。&

これにより、厳密な XHTML として検証できるはずです...

<a href="http://www.example.org/page.aspx?x=1&amp;y=2">Foo</a>

ASP.NET Request.QueryString関数で使用する場合、クエリ文字列は XML エンコーディングを使用しないことに注意してください。URLエンコーディングを使用します:

/mypath/mypage?b=%26stuff

したがって、'&' を %26 に変換する関数を提供する必要があります。

注: その場合、 neetu+%26+geetu を生成するServer.URLEncode(”neetu & geetu”)は、'&' だけでなく & を %26 に変換する必要があるため、必要なものではありません。「%26amp;」を置き換えるには、URLEncode の結果に適用される replace() 呼び出しを追加する必要があります。'%26' によって。

于 2008-11-08T20:30:19.663 に答える
0

さらに徹底する&#38;には、数字参照を使用します。

&amp;文字実体参照であるため:

文字実体参照は、マークアップ言語定義で定義されます。これは、たとえば、HTML の場合、特定の範囲の文字 (HTML 仕様で定義されている) のみを文字エンティティ参照として表すことができる (そして、Unicode 範囲の小さなサブセットのみを含む) ことを意味します。

これは W3C の賢明な人々によるものです (詳細については、こちらをお読みください)。

もちろん、これは大したことではありませんが、W3C の提案では、数値は有効でどこでもいつでも使用できますが、名前付きは HTML には「問題ありません」が、それ以上のものはありません。

于 2014-09-25T19:00:30.373 に答える
-4

問題はあなたが思っているよりも悪いです - Safariで試してみてください。 &amp;amp;に変換され&amp;#38;、ハッシュが URL を終了します。

正解は、XHTML を出力しないことです。開発により多くの時間を費やし、Mac ユーザーを遠ざけることを正当化する理由はありません。

于 2008-11-11T09:20:13.897 に答える