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

时间:2016-09-28 15:53:19

标签: java string encoding character-encoding

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

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

我想知道是否有关于char[]和charset编码的内容我不明白。 Javadocs中没有任何特别的东西可以解释这种差异。

1 个答案:

答案 0 :(得分:7)

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

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

某些编码(如UTF-8)支持所有Unicode字符,而许多其他编码(如US-ASCII)仅支持一小部分。基于char[]的API不允许指定不同的编码(UTF-16-LE或带有BOM的UTF-16),因为一个就足够了,并且促进一致性可以最大限度地减少编码不匹配时的错误。