Haskell字符编码

时间:2012-02-02 13:08:49

标签: haskell character-encoding

我正在编写一个生成XML文件的Haskell程序。显然,在<?xml?>标记中指定字符编码被认为是传统的。我的问题是,最好的办法是什么?

  1. 使用hGetEncoding查找文件的编码,并将其记录在XML文件头中。

  2. 使用hSetEncoding 指定我想要的编码,然后将其硬编码到XML文件头中。

  3. 第一个选项似乎有一个问题,我需要一种方法来将Haskell调用编码的内容转换为XML调用它。第二个问题是,除非我能弄清楚我的电脑上所有其他应用程序使用的编码,否则该文件将无法读取(除了网络浏览器)。

    所有这些都有点莫名其妙,因为我几乎肯定不会需要 Unicode。我只是写简单普通的英文文本而没有特殊字符...(啊,但是£符号因编码而异,不是吗?叹息

3 个答案:

答案 0 :(得分:3)

我建议您使用Hackage上现有的XML库之一,例如xml-conduit,它将自动为您处理编码问题。一般来说,我强烈建议输出UTF-8数据。

答案 1 :(得分:1)

一般情况下:决定要在应用内部处理哪种编码以及要输出的编码。不要忘记一些组件的机会或突发奇想。 了解您正在处理的编码,决定您希望处理的编码并在适当时处理差异。

我要说的是确保你的内部和外部编码是UTF-8并将其他编码中的任何输入转换为UTF-8,然后再对其进行任何其他操作。无论你是否认为你需要Unicode,你必须标准化某些东西,除非你有使用Unicode的具体理由,否则它是最通用的选择,不会让你在以后遇到麻烦。

答案 2 :(得分:0)

我会选择#2 - 更好地控制所使用的编码而不是依赖于默认行为。

正如Joel Spolsky所说:there ain't no such thing as plain text