代码之家  ›  专栏  ›  技术社区  ›  LudvigH

为什么堆栈在windows上的错误输出中提供wierd字符编码?

  •  -1
  • LudvigH  · 技术社区  · 8 年前

    我有个文件 tmp.hs 具有以下内容:

    {- stack
      script
      --resolver lts-10.3
    -}
    

    当我跑步时 stack tmp.hs 我得到以下输出

    ?[;1mC:\Users\ludvig.hult\Source\adventofcode2016\Day1\tmp.hs:0:53: ?[;1m?[31merror:?[0m?[0m?[;1m?[0m?[0m?[;1m
        * Variable not in scope: main :: IO a0
        * Perhaps you meant `min' (imported from Prelude)?[0m?[0m
    

    在windows 10计算机上的CMD或PowerShell中运行。这是什么样的错误?字符编码?如何修复它?

    1 回复  |  直到 8 年前
        1
  •  1
  •   mgsloan    8 年前

    它是ANSI颜色控制代码。可以使用 --color never . 这可能是因为windows 10 fall creators更新导致默认情况下不再解析ANSI代码。相反,应用程序需要选择加入。

    请考虑对此问题实施修复,可能在ansi终端包中 https://github.com/commercialhaskell/stack/issues/3797 . https://github.com/commercialhaskell/stack/issues/3785 也可能是相关的。

    最后,对配置进行简单的添加将有助于实现这一点—指定 color: never -请参见 https://github.com/commercialhaskell/stack/issues/3778

    推荐文章