为什么Java的`String.toCharArray()`和`new String(char [])`方法不接受charset编码?

Jon*_*her 3 java string encoding character-encoding

为什么Java String.toCharArray()和new String(char[])方法不接受字符集编码?

如果您正在使用byte[],可以选择使用String.getBytes(charset)和指定字符集new String(byte[], charset).

我想知道是否有一些关于char[]我不理解的字符串编码.Javadocs中没有任何特别的东西可以解释这种差异.

eri*_*son 7

这些方法不执行编码,它们只是表示String实例内部状态的副本.

编码是将逻辑字形转换为数字表示的过程,数字表示是一系列字节.可以将a String视为表示Unicode字形序列.所述String类具有API来访问这些字形为32位的代码点,或作为与UTF-16-BE(这恰好是字符串的天然的,内部表示),或作为一系列字节的编码的一系列的16位值的以选择的编码.您只需要在最后一种情况下指定编码.

某些编码(如UTF-8)支持所有Unicode字符,而许多其他编码(如US-ASCII)仅支持一小部分.所述char[]基于API不允许指定一个不同的编码(UTF-16-LE,或UTF-16与BOM),因为一个是足够的,并促进均匀性从失配最小化的编码错误.