如何在 Kotlin 中添加 UTF-8 BOM?
How to add a UTF-8 BOM in Kotlin?
我需要生成文本数据文件,都带有 UTF-8 字节顺序标记 和不带它。我该怎么做?
至此文件生成如下:
File(fileName).writeText(source, Charsets.UTF_8)
但这并没有提供按需获得 BOM 的可能性。
注1:
在这个问题中How to add a UTF-8 BOM in java使用了BufferedWriter
和PrintStream.print()
,但这意味着将代码的生成更改为更面向Java的方式(这是最后一个选项)。
注二:
在 2012 年的另一个问题 Java: UTF-8 and BOM 中,指出了一个 Java BOM 未处理的错误。在评论中建议永远不要使用 BOM,但在我的情况下这不是一个选项,因为文件被发送到不同的服务,其中一些需要它,而另一些则不需要。有人知道这方面的最新消息吗?如果适用于科特林?
BOM 是单个 Unicode 字符,U+FEFF。如果需要,您可以自己轻松添加。
File(fileName).writeText("\uFEFF" + source, Charsets.UTF_8)
更难的部分是当文件读回时 BOM 不会自动剥离。这就是为什么人们建议不要在不需要时添加 BOM。
我需要生成文本数据文件,都带有 UTF-8 字节顺序标记 和不带它。我该怎么做?
至此文件生成如下:
File(fileName).writeText(source, Charsets.UTF_8)
但这并没有提供按需获得 BOM 的可能性。
注1:
在这个问题中How to add a UTF-8 BOM in java使用了BufferedWriter
和PrintStream.print()
,但这意味着将代码的生成更改为更面向Java的方式(这是最后一个选项)。
注二:
在 2012 年的另一个问题 Java: UTF-8 and BOM 中,指出了一个 Java BOM 未处理的错误。在评论中建议永远不要使用 BOM,但在我的情况下这不是一个选项,因为文件被发送到不同的服务,其中一些需要它,而另一些则不需要。有人知道这方面的最新消息吗?如果适用于科特林?
BOM 是单个 Unicode 字符,U+FEFF。如果需要,您可以自己轻松添加。
File(fileName).writeText("\uFEFF" + source, Charsets.UTF_8)
更难的部分是当文件读回时 BOM 不会自动剥离。这就是为什么人们建议不要在不需要时添加 BOM。