当前位置: 首页 > 知识库问答 >
问题:

Haskell未正确解析文本

相德宇
2023-03-14
部類 Test《
"\8745\9559\9488\920\226\191\920\237\8359 Test\960\199\232" 

每当我键入print“”“时,代码都是”\12298“而不是从文件中看到的\960\199\232

对这种行为有什么解决办法吗?

共有1个答案

宣滨海
2023-03-14

猜测一下:您使用的是readfile或类似的文件,并且使用的是非UTF8、非UCS2区域设置。您可以通过显式设置读取(文件句柄)和写入(stdout或其他)内容的编码来修复这些内容。例如,下面的程序可以可靠地为我正确地读写测试文件:

import System.IO

main = do
    hSetEncoding stdout utf8
    withFile "test.txt" ReadMode $ \h -> do
        hSetEncoding h utf8
        s <- hGetContents h
        print s
        putStr s

另一种选择是使用适当的区域设置运行现有程序;例如,尝试:

LANG=en_US.utf8 runhaskell test.hs

在最常用的现代shell中,这将为test.hs中的程序的一次运行适当地设置lang环境变量。

 类似资料:
  • 问题内容: 我是Python的新手。我想解析一个csv文件,以便它可以识别带引号的值-例如 1997年,福特E350,“超级豪华卡车” 应该拆分为 (“ 1997”,“福特”,“ E350”,“超级豪华卡车”) 并不是 (“ 1997”,“福特”,“ E350”,“超级”,“豪华卡车””) 以上就是我使用类似的东西所得到的。 我该怎么做呢?同样最好将这些值存储在数组或其他数据结构中吗?因为在我从c

  • 背景: 在我的数据库表中,我有两个时间戳 当我执行“按时间戳ASC排序”时,时间戳2被认为是更大的时间戳(这是正确的)。 要求:我需要得到这些时间戳的差异(timeStamp2-timeStamp1) 我的实施: 答案应该是238ms,但返回的值是-653ms。我不确定我做错了什么。有什么建议吗?

  • 这是我用来读取gradle项目中的application.properties文件的代码。 我的文件位于中 这就是我试图在IntelliJ中运行应用程序的方式

  • 我有一个自由标记 ftl 模板文件,该文件包含在 IntelliJ 项目中的标签库中。问题是 JspTaglibs 在 IntelliJ 中没有解决。该错误突出显示文本 ,错误消息为“无法解析变量'JspTaglibs'”。文件内容如下: 这是一个导入的Maven项目。包含的ftl位于一个已编译的JAR文件中,我将它作为内容根包含在一个Web模块中。 关于解析“JspTaglibs”以便可以为自由

  • 我试图获取一个JSON响应,并将结果存储在一个变量中。我在以前的Swift版本中使用过这个代码版本,直到Xcode8的GM版本发布。我在StackOverflow上看了几篇类似的文章:Swift 2 Parsing JSON-Cant下标类型为“anyObject”的值和Swift 3中的JSON Parsing。 然而,这里所传达的思想似乎不适用于这种情况。 如何正确解析Swift3中的JSON

  • 这是我的解析器代码。显然,我已经用“旧的方式”做了,不能真正让它以新的方式工作。你能告诉我为了让它工作我需要修理哪些东西吗?我读了这篇文章(https://wiki.haskell.org/Functor-Applicative-Monad_Proposal)试图更改我的代码,但我觉得我做错了什么。 我得到的编译错误是: 编辑// 现在的代码是: 错误: