Design Automation API:ZIP 圧縮時のエンコード

Design Automation API では、WorkItem 実行時の素材ファイルに ZIP 圧縮されたファイルを指定することが出来ます。例えば、外部参照を持つ AutoCAD DWG の場合には、参照元の親ファイルと参照ファイルを一緒にZIP 圧縮して処理する必要があります。(アタッチしたラスター画像も外部参照です。)

AutoCAD 2023の画面キャプチャ。建物の内部設計図と、複数の素材イメージ(写真)が表示されている。

この ZIP 圧縮ファイルですが、圧縮対象のファイルに日本語名が使われていると。WorkItem 処理に失敗するケースが存在します。Windows の標準機能を使って ZIP 圧縮した場合です。

Windows ファイルエクスプローラーに表示されたフォルダ内のファイルのリストと、右クリックメニューに表示された 7-Zip オプション

日本語版 Windows では、日本語環境を表すコードページ 932 に基づき、Shift-JIS コードでファイル名がエンコードされて圧縮ファイルが作成されます。

一方、Design Automation API が WorkItem 毎に作成する仮想環境では、英語版 Windows が使用されます。このため、Shift-JIS でエンコード、圧縮された日本語ファイル名は、文字化けを起こした状態で実行環境に展開されることになります。

結果として、WorkItem は指定された本来のファイルを見つけることが出来ず、”failedInstructions” ステータスを返して処理に失敗してしまいます。

ZIP圧縮ファイル内のファイル名が表示されているウィンドウ。ファイル名には日本語や英語が含まれ、異なるファイル形式(JPG, DWG, PNG)がリストされている。

Design Automation API は、ZIP 圧縮時のファイル名エンコードに UTF-8 を前提にしますので、手動操作で ZIP 圧縮する際には、エンコード指定が可能な 7-Zip などのツールなどを使用するようにしてください。

7-Zip ツールの場合、既定の動作は Windows の圧縮機能と同じになってしまいますので注意してください。UTF-8 エンコーディングを指定するには、パラメータに “cu=on” を指定する必要があります。

  • cu=on:7-Zip uses UTF-8 for file names that contain non-ASCII symbols.(7-Zip は非 ASCII シンボル – 日本語 – を含むファイル名に対して UTF-8 を使用します。)
7-Zip 圧縮オプション設定画面、パラメータに 'cu=on' を指定する部分が強調表示されている

なお、日本語版 Windows であっても、eTransmit ではエンコードに UTF-8 が使用されるので、そのまま、Design Automation API で使用することが出来ます。

AutoCAD 2023のインターフェースのスクリーンショット。左側には共有オプションが表示されており、それに関連するアイコンが並んでいる。

By Toshiaki Isezaki

Discover more from Autodesk Developer Blog

Subscribe now to keep reading and get access to the full archive.

Continue reading