7

最近、Webサイトを新しいサーバーに移動しましたが、ファイル名にUnicode文字が含まれるアップロードされた画像の一部で404エラーが発生するという奇妙な問題が発生しています。

ssh / FTPを介して、ファイルが確実にそこにあることがわかります。

例えば:

http://sjofasting.no/project/adnoy

どの画像も機能していません:

コード:

<img class='image-display' title='' src='http://sjofasting.no/wp/wp-content/uploads/2012/03/ådnøy_1_2.jpg' width='685' height='484'/>

SSH:

-rw-r--r-- 1 xxxxxxxx xxxxxxxx 836813 Aug 3 16:12ådnøy_1_2.jpg

また奇妙なのは、ディレクトリに移動すると、画像をクリックすることもでき、それが機能することです。

http://sjofasting.no/wp/wp-content/uploads/2012/03/

'ådnøy_1_2.jpg'をクリックすると機能します。

どういうわけかワードプレスが生成しています

http://sjofasting.no/wp/wp-content/uploads/2012/03/ådnøy_1_2.jpg _

直接フォルダ参照からのコピーが生成されます

http://sjofasting.no/wp/wp-content/uploads/2012/03/a%CC%8Adn%C3%B8y_1_2.jpg

何が起こっている??


編集:

ワードプレスのソースから画像のURLをコピーすると、次のようになります。

http://sjofasting.no/wp/wp-content/uploads/2011/11/Bore-Strand-Hotellg%C3%A5rd-12.jpg

apacheブラウザーからコピーすると、次のようになります。

http://sjofasting.no/wp/wp-content/uploads/2011/11/Bore-Strand-Hotellga%cc%8ard-12.jpg

%C3%A5と%cc%8の間のこの不一致の原因は何でしょうか。

??

4

1 に答える 1

12

ユニコードの正規化。

0xC3 0xA5U+00E5 a-with-ring の UTF-8 エンコーディングです。

0xCC 0x8AU+030A結合環のUTF-8エンコーディングです。

U+0035 は、a-リングを書く構成された (通常のフォーム C) 方法です。文字の後に U+030A が続くのaは、分解された (通常の形式 D) 書き方です。åvs å - フォントのレンダリングによって若干異なる場合がありますが、同じように見えるはずです。

賢明なファイルシステムはそれらをそのままにしておくので、通常、どちらを持っているかは問題ではありません。[char U+00E5].txt( )という名前のファイルを保存するå.txtと、Windows および Linux ではその名前のままになります。

一方、Macは正気ではありません。ファイルシステムは、渡された合成文字が分解文字に変換される範囲で、Normal Form D を​​優先します。ファイルを called に入れて[char U+00E5].txt、すぐにディレクトリを一覧表示すると、実際には というファイルがあることがわかりますa[char U+030A].txt。Mac と同じようにファイルにアクセスすることはでき[char U+00E5].txtます。これは、検索する前にその入力も標準形式 D に変換するためですが、入力した文字シーケンス用語で同じファイル名を復元することはできません。

そのため、ファイルを Mac に保存してから別のファイル[char U+00E5].txta[char U+030A].txt参照するファイル システムに転送すると、リンクが壊れます。

URL の Normal Form D バージョンを指すようにページを更新するか、ひどく Unicode 文字を壊さないファイルシステムからファイルを再アップロードしてください。

異なる考え方は、奇妙な相互運用性の問題を引き起こします。

于 2012-08-30T22:23:48.790 に答える