web-dev-qa-db-ja.com

画像をアップロードしています: 'ø'は 'Ã'に置き換えられます

だから、私は2つのサイトがあります。 1つは生産中、もう1つは開発中です。彼らは同じコンテンツを持ち、アップロードします。

本番環境では、æø、またはåを含む名前を持つ画像は、文字を別のものに置き換えます(たとえば、øøに置き換えてからアップロードフォルダーに保存します)。そしてそれはうまくいきます!私がそれを要求するとき、Wordpressはどういうわけか正しいイメージを得ます。

例:wp-content/upload/2015/01/interiørtips.jpgはイメージinteriørtips.jpgを表示します。

データベースには、特殊文字を含めて、画像への参照は通常通り保存されます。名前にæøåが使用されていますが、他のあいまいな文字の組み合わせではありません。これはデータベースが正常であることを意味します。

開発中にプロダクションからすべてのコンテンツを新しいデータベースにエクスポートしましたが、æø、またはåを含むすべてのイメージは、プロダクションと同じ方法でロードされません。リクエストwp-content/upload/2015/01/interiørtips.jpgは何もロードしませんが、wp-content/upload/2015/01/interiørtips.jpgはロードします。これは実稼働時の動作とは反対です。

誰もがこれについて何か知っていますか?

編集:私はおそらくいくつかの名前変更ツールになります。しかし、誰かが何か洞察をお持ちの場合は、共有してください。

2
ptf

WPのsanitize_file_name()関数はデフォルトでそれらの文字を処理しません。

エンコーディングの問題を回避するために、フィルタを追加してサニタイズすることができます。

function mamaduka_sanitize_file_name( $filename ) {
    $filename = strtr($filename, 'ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïñòóôõöøùúûüýÿĀāĂ㥹ĆćĈĉĊċČčĎďĐđĒēĔĕĖėĘęĚěĜĝĞğĠġĢģĤĥĦħĨĩĪīĬĭĮįİıIJijĴĵĶķĹĺĻļĽľĿŀŁłŃńŅņŇňʼnŌōŎŏŐőŒœŔŕŖŗŘřŚśŜŝŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹźŻżŽžſƒƠơƯưǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜǺǻǼǽǾǿ', 'SZszYAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyyAAAAAAAECEEEEIIIIDNOOOOOOUUUUYsaaaaaaaeceeeeiiiinoooooouuuuyyAaAaAaCcCcCcCcDdDdEeEeEeEeEeGgGgGgGgHhHhIiIiIiIiIiIJijJjKkLlLlLlLlllNnNnNnnOoOoOoOEoeRrRrRrSsSsSsSsTtTtTtUuUuUuUuUuUuWwYyYZzZzZzsfOoUuAaIiOoUuUuUuUuUuAaAEaeOo');

    return $filename;
}
add_filter( 'sanitize_file_name', 'mamaduka_sanitize_file_name' );

このTracコメントのコード例 - https://core.trac.wordpress.org/ticket/16330#comment:22

4
Mamaduka