如果我将 UTF-8 字符转换为字节,基于区域设置、环境等的这 3 个实现的结果是否会有差异?
byte a = "1".getBytes()[0];
byte b = "1".getBytes(Charset.forName("UTF-8"))[0];
byte c = '1';
Run Code Online (Sandbox Code Playgroud)
你的第一行是取决于环境,因为这将编码使用系统的默认字符编码,这可能是也可能不是字符串UTF-8 。
无论您的系统的语言环境或默认字符编码是什么,您的第二行将始终产生相同的结果。它将始终使用 UTF-8 对字符串进行编码。
请注意,UTF-8 是一种可变长度的字符编码。只有前 127 个字符被编码在一个字节中;所有其他字符将占用 2 到 6 个字节。
您的第三行将 a 转换char为 an int。这将导致int包含字符的 UTF-16 字符代码,因为 Javachar使用 UTF-16 存储字符。由于 UTF-16 以与 UTF-8 相同的方式对字符进行部分编码,因此结果将与第二行相同,但对于任何字符而言,通常情况并非如此。
| 归档时间: |
|
| 查看次数: |
2513 次 |
| 最近记录: |