ファイル名をfirefoxブラウザーに渡すと、スペースが%2520
ではなく%20
に置き換えられます。
myhtml.html
というファイルに次の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
に変換する場合です。
あなた(または使用している可能性のあるフレームワーク)は、二重エンコード文字ですか?
編集:特に(LOCALリンクの場合)リソースC:\my path\my file.html
にリンクする場合:
%
は有効なファイル名文字なので、適切なURLに変換するとき(次のポイントを参照)。file://
プロトコルでURLを提供する場合、基本的にすべての予防措置を講じ、エンコードが必要なものをエンコードしたと述べているため、残りは特殊文字として扱う必要があります。したがって、上記の例では、file:///c:/my%20path/my%20file.html
を指定する必要があります。スラッシュの修正は別として、クライアントはここで文字をエンコードしないでください。ノート:
/
はURLで使用され、リバーススラッシュ\
はWindowsパスで使用されますが、ほとんどのクライアントはこれらを適切なスラッシュに変換することで機能します。file://localhost/c:/my%20path/my%file.html
になります) (つまり、2つのスラッシュのみ)ローカルマシンを意味すると想定し、3番目のスラッシュを追加します。一部の-おそらく有効-URLが2回エンコードされた理由。 %25
は、urlencoded %
記号です。したがって、元のURLは次のようになりました。
http://server.com/my path/
次に、一度にエンコードされました:
http://server.com/my%20path/
そして2回:
http://server.com/my%2520path/
したがって、urlencodingを実行する必要はありません-あなたの場合-他のコンポーネントは既にあなたに似ているようです。単にスペースを使用する
Firefoxブラウザーを使用してローカルファイル名にアクセスしようとすると、file:\\\
プロトコル( http://en.wikipedia.org/wiki/File_URI_scheme )を強制する必要があります。スペースを2回エンコードします。これからhtmlスニペットを変更します。
<img src="C:\Documents and Settings\screenshots\Image01.png"/>
これに:
<img src="file:\\\C:\Documents and Settings\screenshots\Image01.png"/>
またはこれ:
<img src="file://C:\Documents and Settings\screenshots\Image01.png"/>
次に、firefoxはこれがローカルファイル名であることを通知され、ブラウザーで画像を正しくレンダリングし、文字列を1回正しくエンコードします。