It has been awhile since I've graced the intertubes with my inane day-to-day life. Here is an obscure, but seemingly undocumented fact about a behavioural difference between java.exe and javaw.exe.
Many sites will tell you that the difference between java.exe and javaw.exe is that the former allocates a console window whereas the latter doesn't. This is certainly true, but there is more.
It turns out that with java.exe, if you try and write strings with international characters in them (e.g. こんにちは、世界!) to System.out, they all come out as ?s.
This seems to be the case regardless of what the file.encoding system property is set to, or the default console encoding of the OS. This is problematic when you are trying to read output from an international program through a pipe. You must use javaw.exe (and use a file.encoding that supports the characters you are printing) to get the goods.
Here's to hoping that one day, a search engine will find this page and someone experiencing the same problem is able to find it.
/mike.