byte arr[] = ... Charset charset = ... int i; for (i = 0; i < arr.length && arr[i] != 0; i++) { } String str = new String(arr, 0, i, charSet);笔记:
通常,最好使用显式的CharSet参数,以使您的应用程序不依赖于平台的默认字符集/编码。
这不适用于某些字符集。例如,UTF-16编码的字符串不能安全地表示为零结尾的字节序列,因为许多代码单元包含零字节。(另一方面,如果字符串不包含代码点零的实例,则[UTF-8可以](http://codingdict.com/questions/111277;请参阅UTF-8可以包含零字节吗?
…但是我想知道String构造函数是否会自动执行此操作。
不,他们不会。(不要“奇怪” …阅读javadoc :-))
我还假定系统的默认字符集将在所有末端使用。
如果未指定字符集,则将使用Java平台的默认字符集。这可能是 系统 默认值,但不能保证。



