tech.guitarrapc.cóm

Technical updates

pulumi up 時の文字化け対策

この記事は、Pulumi dotnet Advent Calendar 2019の19日目です。

qiita.com

そろそろどうやるか見てみましょう。 と思ったのですが、日本語OS上では解決方法が見つからないのでゆるぼ。

TL;DR

現状日本語Windowsでは打つ手なさそう

Summary

pulumi upをすると、dotnetコマンド処理が文字化ける。

cmd/powershell/pwshのいずれでも発生。

.NET Core ���� Microsoft (R) Build Engine �o�[�W���� 16.3

出力というよりこっちの文字化けをどう対応するか

NOTE: だめな方法

CodePagesEncodingProvider

よく、出力文字列に関してはEncodingの違いということで次の対応がとられる。

Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

しかしこれでは、dotnetコマンドの文字化けは解消しない。

chcp

dotnet buildがdotnet execを介しているなら、ということでdotnet出力がutf-8であるという前提でコンソールの文字エンコーディングをutf-8にして合わせてみる。

ようはこれ。

.NET Core task outputs garbled characters in build log on non EN-US environments. · Issue #1344 · microsoft/azure-pipelines-agent

Visual Studio Codeタスクのdotnetコマンド出力を文字化けしないようにする - Qiita

この方法で取られるのが、コンソール文字列のエンコーディングをchcp 65001でutf-8にしてみる。

が、ダメ。

dotnet の言語を変えるようにしてみる

MSBuild should respect upstream tool language requests · Issue #1596 · microsoft/msbuild · GitHub

set DOTNET_CLI_UI_LANGUAGE=en
set VSLANG=1033

だめ。

推察

dotnetは単純に実行するとコンソールに合わせて文字化けしない。つまりshift-jisで出力している。

が、pulumi up時にdotnetの出力を食ってはいているので、ここがutf-8を前提にしている可能性がある。

pulumi/up.go at master · pulumi/pulumi

dotnet > Go > Consoleの間のエンコーディングっぽいので、現時点では英語OSで。

REF

.NET Core task outputs garbled characters in build log on non EN-US environments. · Issue #1344 · microsoft/azure-pipelines-agent