在 Groovy™ 中处理字节顺序标记字符
作者: Paul King
发布时间:2024-07-11 晚上 08:00
最近一篇文章展示了在 Java 编程时如何处理文本文件中的字节顺序标记 (BOM) 字符。特别地,在处理文本文件时通常需要手动删除这些字符。文章展示了如何在使用 InputStream
和 Reader
类时删除 BOM 字符,以及如何使用 NIO
功能删除。它还展示了如何使用 Apache Commons IO 中的 BOMInputStream
类。它会自动跳过 BOM 字符。
这些示例可以在 Groovy 中原样运行(尽管在第一个示例中修复了一个错误),但 Groovy 中(完整的!)惯用解决方案是
println new File('file.txt').text
没错,Groovy 在使用 getText()
方法以及其他方法(如 eachLine
、splitEachLine
、readLines
、withReader
和 filterLine
)时,会自动检测编码并删除 BOM 字符。通过在文件和 URL 上使用 newReader
方法,也可以获得相同的功能。
如果需要,有一些变体允许您指定编码,以便您希望显式声明它。在这种情况下,您需要手动处理 BOM 字符。
Groovy 的方法(如 getText
)会调用底层 CharsetToolkit
类。如果您想了解更多关于文件编码的信息,也可以直接使用该类。