私は OS X で Web サイト開発を行っていますが、ライブ Web サイト (Linux/LAMP を実行) の一部を自分のマシンで実行されている開発サーバーに移動することがよくあります。そのような例の 1 つは、イメージ (ユーザーが生成したコンテンツ、たとえば ftp ダウンロードを介して) をダウンロードし、それらを何らかの方法で処理して、生産サイトに戻すことです。
関連する画像ファイルは Linux マシンで作成されており、ファイル名は NFC 分解を使用して UTF-8 でエンコードされているようです。一方、OS X の HFS+ ファイル システムは、NFC で分解されたファイル名を許可せず、NFD に変換します。ただし、完了してファイルをアップロードしたい場合、Linuxは両方をサポートしているため、ファイルの名前はNFD分解を使用するようになります。その結果、新しくアップロードされた (場合によっては置き換えられた) ファイルは、予期された URL でアクセスできなくなります。
転送中 (できれば) または転送後にファイルの UTF 分解を変更する方法を探しています (convmv
良いオプションのように見えますが、このサーバーに十分な権限がないため、この特定のケースでは不可能です)。事前にやるのは無理だと思います。Transmit と rsync (通常使用するデプロイ スクリプトを使用) を使用して FTP アップロードを試みましたが、役に立ちませんでした。rsyncの--iconv
オプションは理想的に思えましたが、残念ながら、rsync 2.6.9 を実行しているサーバーはそれを認識しませんでした。
かなりの数の人が同様の問題を抱えていると思います。解決策や回避策を聞いてうれしいです!
更新:この場合、Ubuntuを実行している仮想マシンにファイルを再同期し、そこでconvmvを実行してから、ステージングサーバーに再度再同期しました。これはかなりうまく機能しますが、少し時間がかかります。おそらく、OS X に ext ファイル システムをマウントし、元の NFC で分解されたファイル名を使用して、代わりにそこにファイルを保存することは可能でしょうか?
また、私のユースケースである将来のWordPressインストールでこの問題をすべて一緒に回避するには、ファイルをアップロードするadd_filter('sanitize_file_name', 'remove_accents');
前に単純なものを追加できます。