作为练习,我想编写一个XML解析器(我知道有很多非常好的库,但我想亲自尝试)。我知道ByteString.Lazy可能是任何足够大的xml文件的最佳选择,因为在内存中,普通字符串是unicode点的列表。我的问题是:我应该使用Data.Text.Lazy.Encoding.decodeUtf8With作为预处理器还是直接将编码检测传递给解析器?
发布于 2013-12-18 01:57:37
如何做到这一点是指定的在XML标准本身中,虽然这是一个非规范性附录(也就是说,您可以用另一种方式)。
在这里复制算法将是多余的,所以我建议只遵循上面的链接。
发布于 2013-12-18 01:33:43
这是个棘手的问题..。XML文档的编码在文档本身中指定(在处理指令中)。这显然导致了一个鸡和蛋问题,在这里描述- XML头中的“编码”有什么用?。
因此,如果您想要正确地做一些事情,首先必须弄清楚如何读取文档的第一行(它是每字符一个字节还是两个字节),然后读取它,然后使用正确的编码读取其余的文本。幸运的是,第一行将是32-127范围内的字符,因此这使事情变得简单一些。
如果是我,而我是作为一个学习活动,我只会限制医生utf8.(这里的细节只是管道)。
https://stackoverflow.com/questions/20647818
复制相似问题