Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 哈斯克尔与网络(UTF-8)_Haskell_Web_Utf 8 - Fatal编程技术网

Haskell 哈斯克尔与网络(UTF-8)

Haskell 哈斯克尔与网络(UTF-8),haskell,web,utf-8,Haskell,Web,Utf 8,我有一个Haskell脚本什么putStr一些东西。。。我想在网页上显示这个输出。我编译了Haskell脚本,让它像CGI脚本一样执行,效果很好 但是当我在putStr中有特殊字符时,它将失败: 终端输出: <p class="text">what happrns at ä ?</p> 它后面什么都没有显示。。。发生了什么事?一些问题: 您的CGI脚本发送的内容类型是什么 是否在stdout句柄上设置编码 您应该始终发送内容类型标题,并且在该标题中可以规定字符编码。有关

我有一个Haskell脚本什么
putStr
一些东西。。。我想在网页上显示这个输出。我编译了Haskell脚本,让它像CGI脚本一样执行,效果很好

但是当我在
putStr
中有特殊字符时,它将失败:

终端输出:

<p class="text">what happrns at ä ?</p>
它后面什么都没有显示。。。发生了什么事?

一些问题:

  • 您的CGI脚本发送的内容类型是什么

  • 是否在
    stdout
    句柄上设置编码

  • 您应该始终发送
    内容类型
    标题,并且在该标题中可以规定字符编码。有关更多详细信息,请参阅

    此外,Haskell文件句柄的编码由操作系统当前的默认值决定。它可能是UTF-8,但也可能是其他东西。有关更多信息,请参阅

    因此,为了确保您发送的字符正确显示在网页上,我将:

  • 发送字符集为utf8的
    内容类型
    标题
  • 确保
    stdout
    的编码也设置为
    utf8

    import System.IO
    ...
    hSetEncoding stdout utf8
    
  • 如果内容类型标题和输出编码一致,事情应该会解决。

    一些问题:

  • 您的CGI脚本发送的内容类型是什么

  • 是否在
    stdout
    句柄上设置编码

  • 您应该始终发送
    内容类型
    标题,并且在该标题中可以规定字符编码。有关更多详细信息,请参阅

    此外,Haskell文件句柄的编码由操作系统当前的默认值决定。它可能是UTF-8,但也可能是其他东西。有关更多信息,请参阅

    因此,为了确保您发送的字符正确显示在网页上,我将:

  • 发送字符集为utf8的
    内容类型
    标题
  • 确保
    stdout
    的编码也设置为
    utf8

    import System.IO
    ...
    hSetEncoding stdout utf8
    

  • 如果内容类型标题和输出编码一致,事情应该会解决。

    假设Haskell程序正确输出utf-8,您仍然需要让浏览器知道您使用的编码。在HTML4中,可以按如下方式执行此操作

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    

    这将以字节为单位显示实际输出,以便您可以逐个字符进行验证。

    假设Haskell程序正确输出utf-8,您仍然需要让浏览器知道您使用的编码。在HTML4中,可以按如下方式执行此操作

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    

    这将以字节为单位显示实际输出,以便您可以逐个字符进行验证。

    我的
    index.html
    中已经有
    ,在标记中添加它是什么意思“?对不起,应该是
    标记,但输出将其截断。我已经修正了答案。查看xxd输出的结果是什么?我已经在我的
    index.html
    中找到了
    ,你在标签中添加这个是什么意思“?对不起,应该是
    标记,但输出将其截断。我已经修正了答案。查看xxd输出的结果是什么?谢谢。我忘了编码,这是重要的事情。谢谢。我忘了编码,这是重要的事情。
    ./myProgram | xxd