在 Groovy 中处理字节顺序标记字符

作者: Paul King
发布时间: 2024-07-11 08:00PM


一篇 最近的文章 展示了如何在 Java 代码中处理文本文件中的 字节顺序标记 (BOM) 字符。特别是,在处理文本文件时,通常需要手动删除这些字符。这篇文章展示了如何使用 InputStreamReader 类以及 NIO 功能来删除 BOM 字符。它还展示了如何使用 Apache Commons IO 中的 BOMInputStream 类。它会自动跳过 BOM 字符。

这些示例可以在 Groovy 中直接运行(尽管在修复第一个示例中的错误后),但在 Groovy 中,完整的惯用解决方案是

println new File('file.txt').text

没错,Groovy 在使用 getText() 方法以及 eachLinesplitEachLinereadLineswithReaderfilterLine 等其他方法时,会自动检测编码并删除 BOM 字符。相同的功能也可以使用文件和 URL 上的 newReader 方法获得。

如果需要,有一些变体允许您指定编码,以防您希望显式声明它。在这种情况下,您需要手动处理 BOM 字符。

Groovy 的方法(如 getText)调用底层的 CharsetToolkit 类。如果您想了解有关文件编码的更多信息,也可以直接使用该类。