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