I've always taken a perverse pleasure in character encoding problems. I
was intrigued by this SO question
<http://stackoverflow.com/questions/30538461/why-groovy-file-write-with-utf-16le-produce-bom-char>
on
UTF 16 BOMs in Java vs Groovy.
It appears using withPrintWriter(charset) produces a BOM whereas new
PrintWriter(file, charset) does not. As demonstrated here:
File file = new File("tmp.txt")try {
String text = " "
String charset = "UTF-16LE"
file.withPrintWriter(charset) { it << text }
println "withPrintWriter"
file.getBytes().each { System.out.format("%02x ", it) }
PrintWriter w = new PrintWriter(file, charset)
w.print(text)
w.close()
println "\n\nnew PrintWriter"
file.getBytes().each { System.out.format("%02x ", it) }} finally {
file.delete()}
Outputs
withPrintWriter
ff fe 20 00
new PrintWriter
20 00
Is this difference in behavior intentional? It seems kinda odd to me.
-Keegan