Now... is it what should be done or not is the good question to ask :-)
Does Windows manages to open UTF-16 files without BOMs?

2015-06-08 22:17 GMT+02:00 Keegan Witt <keeganwitt@gmail.com>:
I forgot to mention that.  Yes, I ran the test mentioned in Windows.

On Mon, Jun 8, 2015 at 3:54 PM, Guillaume Laforge <glaforge@gmail.com> wrote:
That's a good question.
I guess this is happening on Windows? (I haven't tried here, since I'm on OS X)
I think BOMs were mandatory in text files on Windows.

2015-06-08 17:53 GMT+02:00 Keegan Witt <keeganwitt@gmail.com>:
I've always taken a perverse pleasure in character encoding problems.  I was intrigued by this SO question 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



--
Guillaume Laforge
Groovy Project Manager
Product Ninja & Advocate at Restlet





--
Guillaume Laforge
Groovy Project Manager
Product Ninja & Advocate at Restlet