这是代码。
module Lib
( someFunc
) where
someFunc :: IO ()
someFunc = putStrLn "你好"
我尝试在 Windows 10 上的 PowerShell 中运行该程序。chcp 936
stack run
输出是:─π║├
这是另一个尝试:chcp 65001
stack run
输出是:Σ╜áσÑ╜
有什么建议可以使它正常工作吗?
最佳答案
chcp
由于 .NET 执行的缓存,在 PowerShell 内部不起作用。
您可以在 PowerShell 中执行等效的命令,如下所示,使用等效的命令chcp 65001
(更改为 UTF-8 代码页)作为示例:
[Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding =
[System.Text.Utf8Encoding]::new() # BOM-less UTF-8
要获得其他编码,通过它们的 Windows 代码页号(或名称),使用 [System.Text.Encoding]::GetEncoding()
.见 this answer背景信息。
关于windows - 在 Windows 10 上的 PowerShell 中使用 Haskell 输出 Utf8 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65982138/