[解決済み] htmlのスペースが%20ではなく、%2520と表示される。
2022-03-10 04:31:25
質問
Firefoxブラウザにファイル名を渡すと、空白を次のように置き換えます。
%2520
の代わりに
%20
.
というファイルに、以下のようなHTMLを記述しています。
myhtml.html
:
<img src="C:\Documents and Settings\screenshots\Image01.png"/>
を読み込むと
myhtml.html
をfirefoxで表示すると、画像が壊れて表示されます。 そこで、画像を見るためにリンクを右クリックすると、このように修正されたURLが表示されます。
file:///c:/Documents%2520and%2520Settings/screenshots/Image01.png
^
^-----Firefox changed my space to %2520.
なんじゃこりゃー。 私のスペースが
%2520
. に変換すべきではありません。
%20
?
ブラウザが私の画像を見つけることができるように、このHTMLファイルを変更するにはどうすればよいのでしょうか? ここで何が起こっているのでしょうか?
解決するには?
それが何なのか、少し説明します。
%2520
は.
共通スペース文字は、次のようにエンコードされます。
%20
というのは、ご指摘の通りです。
その
%
文字は、次のようにエンコードされます。
%25
.
の取得の仕方
%2520
は、urlにすでに
%20
を再び urlencode し、その際に
%20
から
%2520
.
文字を二重エンコードしていませんか?
編集してください。
これを少し拡大すると、特に
ローカル
のリンクがあります。リソースにリンクしたい場合を想定すると
C:\my path\my file.html
:
-
ローカルファイルのパスだけを指定した場合、ブラウザは指定されたすべての文字をエンコードして保護することが期待されます (上記の場合、図のようにスペースで指定する必要があります。
%
は有効なファイル名文字であり、そのようにエンコードされます)。 -
という URL を指定した場合
file://
プロトコルは、基本的に、あらゆる予防措置を講じ、エンコードが必要なものはエンコードし、それ以外は特殊文字として扱うべきであると述べていることになります。上記の例では、次のように指定します。file:///c:/my%20path/my%20file.html
. スラッシュを修正する以外には、クライアントはここで文字をエンコードしてはいけません。
注意事項
-
スラッシュの方向 - 前方スラッシュ
/
はURLで使用され、逆スラッシュ\
がありますが、ほとんどのクライアントでは、適切なフォワードスラッシュに変換することで、どちらも使用することができます。 -
また、プロトコル名の後にスラッシュが3つありますが、これはリモートホストではなく現在のマシンを無言で参照しているためです (省略されていない完全なパスは次のようになります。
file://localhost/c:/my%20path/my%file.html
しかし、ほとんどのクライアントは、ホスト部分(つまり2つのスラッシュのみ)がなくても、ローカルマシンを意味すると仮定して、3つ目のスラッシュを追加することで動作します。
関連
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] HTMLの#記号の文字実体は?
-
[解決済み] リンクのように動作するHTMLボタンを作成する方法
-
[解決済み] HTML 5: Is it <br>, <br/>, or <br />?
-
[解決済み] HTMLのid属性に有効な値は何ですか?
-
[解決済み] How can I set the default value for an HTML <select> element?
-
[解決済み] HTMLページからのリダイレクト
-
[解決済み] 複数のノンブレイキングスペース("nbsp")ではなく、タブスペースを使用しますか?
-
[解決済み] スペース文字をURLエンコードしています。+ または%20?
-
[解決済み】なぜHTMLは "chucknorris "を色と見なすのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CSSのホバー効果が私のコードで機能しない
-
[解決済み】ローカルの実行ファイルへのハイパーリンクを作成する方法は?
-
[解決済み】スタイルシートとして解釈されるリソースがMIMEタイプtext/htmlで転送される(ウェブサーバーとは関係ないようです)。
-
[解決済み] フレックスアイテムを右にフロートさせる
-
[解決済み] Bootstrapのカラムが機能しない
-
[解決済み] bodyタグに追加された奇妙なiframe、`rufous-sandbox`について
-
[解決済み] HTML5 Validation Error: body start tag が見えたが、同じタイプの要素がすでに開かれていた
-
[解決済み] SRCとHREFの違い
-
[解決済み] iFrameがURLを読み込んでいない
-
[解決済み] ホバー時に背景画像を暗くする