You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下运行stack bench(tasty-bench)出现编码错误求助

解决Windows下Haskell Stack Bench的编码错误(无法编码'\956')

问题根源

Windows默认控制台编码(多为CP1252或GBK)不支持Unicode字符μ(代码点U+00B5,对应Haskell中的'\956'),当基准测试输出包含该字符时,会触发编码失败的错误。

可行解决方案

1. 临时切换控制台编码为UTF-8

在执行stack bench前,先在命令行执行:

chcp 65001

该命令将控制台编码切换为UTF-8,可完整支持Unicode字符输出。

2. 修改基准测试代码替换特殊字符

如果不想调整控制台环境,可直接修改测试代码,将μ替换为ASCII兼容的表述:
原代码示例:

putStrLn "操作耗时:250 μs"

修改后:

putStrLn "操作耗时:250 us"
-- 或更清晰的写法
putStrLn "操作耗时:250 microseconds"

3. 指定Stack运行时编码选项

执行bench时直接附加RTS编码参数:

stack bench --rts-options=-encoding=utf8

也可以在stack.yaml中持久化配置:

benchmarks:
  your-benchmark-name:
    ghc-options: -with-rtsopts=-encoding=utf8

4. 使用Windows Terminal运行命令

Windows Terminal原生支持UTF-8编码,切换到该终端后执行stack bench,可避免编码兼容性问题。

内容的提问来源于stack exchange,提问作者Stéphane Laurent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 21:23:11