4D-jp 4D Japan Technical Support Team

zip圧縮の落とし穴

2022-03-24

macOSとWindowsには,システム標準の圧縮ツールが用意されており,ファイルやフォルダーを右クリックして手軽にアーカイブすることができます。作成されるのは.zip形式のファイルです。一方のプラットフォームで作成したアーカイブは,通常,他方のプラットフォームでも展開することができますが,プロジェクトをアーカイブする場合は注意が必要です。

.zip形式のアーカイブには,UTF-8エンコーディングでファイルやフォルダーのUnicodeパスが書き込まれます。MacとWindowsでは,圧縮ツールが使用するUnicodeの正規化方式が違います。MacはNFC,WindowsはNFKDです。たとえば「ä」という文字をMacで圧縮した場合,C3 A4にエンコードされ,Windowsで展開すると61 CC 88にデコードされます。つまり,Macでは文字とアクセント記号(日本語の濁点・半濁点を含む)を合成した文字が優先的に使用されますが,Windowsでは文字とアクセント記号を分解した文字列が優先的に使用されるということです。

Windowsのファイルシステムは,NFCとNFKDのファイルパスを区別し,実質的に同名のファイルを作成することができるようになっています。4Dのプロジェクトモードは,メソッドやフォームをNFCパスからロードするため,NFKDにパスが変換されてしまった場合,フォームやメソッドがみつからないことになります。

MacからWindowsに.zip形式でファイルを移動する場合,システム標準の圧縮ツールは使用しないでください。代わりに7-ZipやWinRARを使用することができます。


リンク