If a MIME type for byte print data does not include a charset parameter, indicating the encoding, the Java Print Service assumes a character set of US-ASCII. This behavior is different than that of the Java runtime, which always assumes the default encoding for the user's locale on the underlying operating system, which might be different than US-ASCII.
Every instance of the Java Virtual Machine* has a default character encoding determined during virtual-machine startup that usually depends upon the locale and charset used by the underlying operating system. In a distributed environment, two JVMs might not share the same default encoding. Thus clients who want to stream platform-encoded text data from the host platform to a Java Print Service instance must explicitly declare the charset and not rely on defaults.
For these reasons,
applications that stream text data should always specify the
charset in the MIME type. To specify a MIME type, an application
needs to determine the host platform's encoding, which it does by
calling the DocFlavor.hostEncoding
method. The MIME type returned
from this method is guaranteed to be understood by the current
JVM.
See character encodings for more information on the character encodings supported on the Java platform.