我正在尝试使用Phobos标准库函数来读取任何有效的UTF文件(UTF-8,UTF-16或UTF-32)并将其作为UTF-8字符串(又名D's {{ 1}})。仔细阅读文档后,我能想到的最简洁的功能是
string
然而,抓住一连串的例外情况似乎非常苛刻。是否有一种“更清洁”的方式来解决它而不依赖于捕获一系列例外?
此外,如果源文件是UTF-16或UTF-32,上面的函数似乎在结果字符串中返回一个字节的BOM,我想省略它,因为它是UTF-8。除了明确地剥离它之外,有没有办法省略它?
答案 0 :(得分:1)
您的一个问题是另一个问题的答案:BOM允许您识别文件中使用的确切UTF编码。
理想情况下,readText
会为您执行此操作。目前,它没有,所以你必须自己实现它。
我建议使用std.file.read
,将返回的void[]
转换为ubyte[]
,然后查看前几个字节以查看它们是否以BOM开头,然后转换结果到适当的字符串类型并将其转换为string
(使用toUTF8
或to!string
)。