Design Automation API では、WorkItem 実行時の素材ファイルに ZIP 圧縮されたファイルを指定することが出来ます。例えば、外部参照を持つ AutoCAD DWG の場合には、参照元の親ファイルと参照ファイルを一緒にZIP 圧縮して処理する必要があります。(アタッチしたラスター画像も外部参照です。)
この ZIP 圧縮ファイルですが、圧縮対象のファイルに日本語名が使われていると。WorkItem 処理に失敗するケースが存在します。Windows の標準機能を使って ZIP 圧縮した場合です。
日本語版 Windows では、日本語環境を表すコードページ 932 に基づき、Shift-JIS コードでファイル名がエンコードされて圧縮ファイルが作成されます。
一方、Design Automation API が WorkItem 毎に作成する仮想環境では、英語版 Windows が使用されます。このため、Shift-JIS でエンコード、圧縮された日本語ファイル名は、文字化けを起こした状態で実行環境に展開されることになります。
結果として、WorkItem は指定された本来のファイルを見つけることが出来ず、"failedInstructions" ステータスを返して処理に失敗してしまいます。
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 を使用します。)
なお、日本語版 Windows であっても、eTransmit ではエンコードに UTF-8 が使用されるので、そのまま、Design Automation API で使用することが出来ます。
By Toshiaki Isezaki
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。