Windows PowerShellで単にパイプで渡したりリダイレクトでファイルに落としたりすると普通に文字化けする
(どんな仕様よ・・)
ネット文献あさってもいまいち理解し難く解決がよくわからないものばかりなので、端的には
.ps1ファイルを作り以下のように書く。が正解っぽい
端的には・・
mysqlshでSQLを実行し結果をファイルに出力しようとした例
.ps1ファイル
[Console]::OutputEncoding = [Text.Encoding]::UTF8
mysqlsh --sql --uri USER@HOSTIP:3308/DATABASENAME --file=SQLFILE.TXT.txt | Out-File -FilePath OUTPUTFILE.TXT.txt -Encoding utf8
作成し、.ps1ファイルを実行すると正しく出力されます
うまくいかないパターン
コンソール上で [Console]::OutputEncoding = [Text.Encoding]::UTF8
と打っても、次のコマンドにはどうも引き継がれないっぽい。
ので、.ps1ファイル内に記述して実行が必要そう
ちなみに
ちなみにmysqlshは実行するとパスワードを聞かれたあとに標準出力で Save password for ~
と追加で聞かれているので、もう一回Enterを押す必要あり