如何在Kotlin中添加UTF-8 BOM



我需要生成文本数据文件,既有UTF-8字节顺序标记,也有没有它。我该怎么做?

到目前为止,文件的生成方式如下:

File(fileName).writeText(source, Charsets.UTF_8)

但这并不能提供按需提供BOM的可能性。

注1:

在这个问题中,如何在java中添加UTF-8 BOM使用BufferedWriterPrintStream.print(),但这意味着要将代码的生成更改为更面向java的方式(这是最后一个选项(。

注2:

在另一个问题Java:UTF-8和2012年的BOM中,指出了BOM无法处理的Java Bug。在评论中建议永远不要使用BOM,但在我的情况下,这不是一个选项,因为文件被发送到不同的服务,其中一些服务需要BOM,而另一些服务则不需要。有人知道这方面的最新消息吗?如果适用于Kotlin?

BOM是一个单一的Unicode字符,U+FEFF。如果需要,您可以自己轻松添加。

File(fileName).writeText("uFEFF" + source, Charsets.UTF_8)

更困难的是,当文件读回时,BOM不会自动剥离。这就是为什么人们建议在不需要BOM时不要添加BOM的原因。

最新更新