Re: String default encoding: UTF-16 or Platform's default charset?
"Roedy Green" <see_website@mindprod.com.invalid> wrote in message
news:lbt4g6tvsndtr16nulbeqe2l6fd4f7ktmp@4ax.com...
On Fri, 10 Dec 2010 12:52:32 -0500, Joshua Cranmer
<Pidgeot18@verizon.invalid> wrote, quoted or indirectly quoted someone
who said :
For serialization as a byte stream, Strings by default use the platform
default charset
I don't think so. They use UTF-8 with lead count field, like
DataOutputStream. Otherwise such files would not be portable. I use
serialised streams all the time as resources. They would not work if
they read back differently by different clients.
It's a complicated area, so we need to speak precisely.
DataOutputStream's writeChar() and writeChars() methods write characters as
UTF-16 code points. Its WriteUTF() method writes a string in (Java's
version of) UTF-8. None of these are affected by the platform's default
encoding.
Java object serialization uses these methods. Again, its output is
unaffected by the platform's default encoding.
The platform's default charset does affect other places where chars are
converted to bytes and no encoding is specified. These include
String.getBytes() and the various Writer methods that output strings (e.g
write(String)) if no encoding was specified when the Writer was created.