コンテンツにスキップ

ユニコードの相互運用性

R2はWorkersの上に構築されており、ユニコードをネイティブにサポートしています。ユニコードの一つのニュアンスで、しばしば見落とされるのが、ユニコードの同等性によるファイル名の相互運用性の問題です。

ユーザーからのフィードバックに基づき、デフォルトでキー名をNFC正規化してから保存することを選択しました。これは、例えばHélloHélloがR2では同じオブジェクトである一方、他のストレージプロバイダーでは異なるオブジェクトであることを意味します。HélloHélloは異なる文字バイト列である可能性がありますが、表示される際には同じになります。

ただし、R2は表示のためにエンコーディングを保持します。オブジェクトをリストすると、最後にアップロードしたエンコーディングが返されます。

考慮すべきプラットフォーム固有の違いもいくつかあります:

  • WindowsとmacOSのファイル名は大文字と小文字を区別しませんが、R2とLinuxは区別します。
  • Windowsコンソールのユニコードサポートはエラーが発生しやすいです。コマンドラインツールを使用する前にchcp 65001を実行するか、オブジェクト名が正しく表示されない場合はCygwinを使用してください。
  • Linuxでは、ファイル名がバイトストリームであるため、ユニコード同等の異なるファイルを許可します。Linux上のユニコード同等のファイル名は、同じR2オブジェクトを指します。

ユニコードの同等性を回避し、バイト指向のキー名を使用することが重要な場合は、Cloudflareのアカウントチームに連絡してください。