Anaplan Connect での文字化けや "Invalid UTF-8 start byte" の対応策
表題について、対策をご共有いたします。
日本語を含むアクションを実行したとき、文字化けや "Invalid UTF-8 start byte" のエラーが発生することがあります。結論として、原因はエンコードの不一致になります。
下記の3箇所でエンコードが揃っていないと不一致が発生します:
- スクリプトファイル
- 実行環境
- JVM(Java)
例①
set Operation=-debug -service "https://api.anaplan.com" -auth "https://auth.anaplan.com" -export "日本語エクスポート" -execute -get "こんにちは.csv"
Shift JIS で保存された上記スクリプトを実行環境 chcp 850 (ISO-8859-1) で実行すると、下記エラーが出力されます。
2020-04-15 14:48:50 ERROR [c.a.client.Program :876 ] 28244 |-- Export "oüEu{iUaGaNaXa|u[ag" not found in workspace 8a81b08e5444b72f0154c4bc58fa2838, model 7E461C7B598F4DA9A4B3722167982449 2020-04-15 14:48:50 ERROR [c.a.client.Program :261 ] 28244 |-- An import, export, action or process must be specified before -execute 2020-04-15 14:48:50 ERROR [c.a.client.Program :434 ] 28244 |-- Export failed - ignoring content
chcp 850はそもそも日本語を扱うことをできず、日本語が文字化けしてしまい、対象リソースをAnaplan で見つけることをできずエラーになりました。
例②
set Operation=-debug -service "https://api.anaplan.com" -auth "https://auth.anaplan.com" -export "日本語エクスポート" -execute -get "こんにちは.csv"
Java 実行コマンドに -Dfile.encoding=UTF-8 オプションを与え、Shift JIS で保存された上記スクリプトを実行環境 chcp 932 (Windows Shift_JIS対応エンコード) で実行。結果として、エクスポートは正しく実行されますがコンソール上の出力は文字化けします。
2020-04-15 15:08:36 INFO [c.a.client.Task :-1 ] 37156 |-- exportName - 譌・譛ャ隱槭お繧ッ繧ケ繝昴・繝・ 2020-04-15 15:08:37 INFO [c.a.c.l.LogUtils :52 ] 37156 |-- 竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・ 竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・竊・ 2020-04-15 15:08:37 INFO [c.a.c.ServerFile :98 ] 37156 |-- Downloading file C:\Anaplan\Integration\scripts\anaplan-connect-1.4.4\bin\縺薙s縺ォ縺。縺ッ.csv 2020-04-15 15:08:38 INFO [c.a.client.Program :445 ] 37156 |-- The server file 譌・譛ャ隱槭お繧ッ繧ケ繝昴・繝・has been downloaded to C:\Anaplan\Integration\scripts\anaplan-connect-1.4.4\bin\縺薙s縺ォ縺。縺ッ.csv
対応策
対応策は下記3つのエンコードを揃えることになります。
- スクリプトファイル
- 実行環境
- JVM(Java)
スクリプトファイルのエンコード変更方法
サクラエディタをご利用であれば、画面右下のRECの左隣にある枠をダブルクリックすることで変更可能です。
他のエディタにも同様の機能が備わっておりますのでご利用エディタのマニュアルをご参照ください。
実行環境のエンコード変更方法
コマンドプロンプト、もしくはスクリプトで chcp <数字> を実行します。
<数字> は任意のエンコードに合わせ変更します。
例、
Shift JIS(SJIS)の場合
chcp 932
UTF-8の場合
chcp 65001
JVM(Java)のエンコード変更方法
AnaplanClient.bat の ”set JAVA=...” 直下に下記行を追加します。
set JAVA_OPTS=-Dfile.encoding=<エンコード>
もしくは、下記システム環境変数を定義します。
JAVA_TOOL_OPTIONS=-Dfile.encoding=<エンコード>
<エンコード> は任意のエンコードに合わせ変更します。
例、
Shift JIS(SJIS)の場合
-Dfile.encoding=Shift_JIS
UTF-8の場合
-Dfile.encoding=UTF8