在D中将文本文件转换为UTF8

时间:2014-03-10 20:41:03

标签: text utf-8 character-encoding d

我正在尝试使用Phobos标准库函数来读取任何有效的UTF文件(UTF-8,UTF-16或UTF-32)并将其作为UTF-8字符串(又名D's {{ 1}})。仔细阅读文档后,我能想到的最简洁的功能是

string

然而,抓住一连串的例外情况似乎非常苛刻。是否有一种“更清洁”的方式来解决它而不依赖于捕获一系列例外?

此外,如果源文件是UTF-16或UTF-32,上面的函数似乎在结果字符串中返回一个字节的BOM,我想省略它,因为它是UTF-8。除了明确地剥离它之外,有没有办法省略它?

1 个答案:

答案 0 :(得分:1)

您的一个问题是另一个问题的答案:BOM允许您识别文件中使用的确切UTF编码。

理想情况下,readText会为您执行此操作。目前,它没有,所以你必须自己实现它。

我建议使用std.file.read,将返回的void[]转换为ubyte[],然后查看前几个字节以查看它们是否以BOM开头,然后转换结果到适当的字符串类型并将其转换为string(使用toUTF8to!string)。