WindowsTerminal/powershellでのstack/GHCの文字化け
<stderr>: commitAndReleaseBuffer: invalid argument (invalid character)
で動かないぞ- 文字コードが悪いらしいぞ
- chcp 65001でutf8にするぞ
- 動くようになったけど文字化けするぞ
- powershellでエンコーディングの設定するぞ
- 直ったぞ
という話。
app\Main.hs:36:27: error: <stderr>: commitAndReleaseBuffer: invalid argument (invalid character)
とかなんとか言われて動かない場合にターミナルの文字コードをUTF-8に変えようと、
chcp 65001
とするも、
app\Main.hs:27:8: error: 窶「 No instance for (Control.Monad.Reader.Class.MonadReader GB IO) arising from a use of 窶・iew窶・[0m 窶「 In a stmt of a 'do' block: m <- view mem In the expression: do m <- view mem pure 10 In an equation for 窶腕eadMem窶・ readMem = do m <- view mem pure 10 | 27 | m <- view mem | ^^^^^^^^
みたいな感じで文字化けする場合、
[System.Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("utf-8") [System.Console]::InputEncoding = [System.Text.Encoding]::GetEncoding("utf-8") $env:LESSCHARSET = "utf-8"
とやると、
app\Main.hs:27:8: error: • No instance for (Control.Monad.Reader.Class.MonadReader GB IO) arising from a use of ‘view’ • In a stmt of a 'do' block: m <- view mem In the expression: do m <- view mem pure 10 In an equation for ‘readMem’: readMem = do m <- view mem pure 10 | 27 | m <- view mem | ^^^^^^^^
みたいな感じになっていい感じ。