I was reading through the source code of java.lang.String , specifically getBytes() :
public byte[] getBytes(Charset charset) {
if (charset == null) throw new NullPointerException();
return StringCoding.encode(charset, value, offset, count);
}
However, I couldn't find the StringCoding.encode() method in the Java API. I'd like to be able to compare it with java.nio.charset.CharsetEncoder.encode() , since that class/method is referenced as an alternative in the String.getBytes() javadoc. How do I find the StringCoding class, and it's source code? And what is the difference between the respective .encode() methods?
The difference is that with a CharsetEncoder
you can choose how to fail; this is the CodingErrorAction
class.
By default, String
's .getBytes()
uses REPLACE
. Most uses of CharsetEncoder
however will REPORT
insead.
You can see an example of CodingErrorAction
usage at the end of this page .
One such example of REPORT
usage is in java.nio.file. At least on Unix systems, a pathname which you created from a String
will be encoded before it is written to disks; if the encoding fails (for instance, you use ö
and system charset US-ASCII), the JDK will refuse to create the file and you will be greeted with an (unchecked!) InvalidPathException
.
This is unlike File
which will create who knows what as a file name, and one more reason to ditch it...
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.