默认情况下,如何获取 UTF-8 或 ASCII 字符串而不是 UTF-16



我从 EditText 获取字符串,但无法将其正确转换为字节数组,因为它(据我所知)以 UTF-16 编码。我可以设置字符串中写入的所有字符默认为 ASCII 或 UTF-8 吗?或者我可以以某种方式将 UTF-16 转换为 UTF-8 或 ASCII?

我发现解决问题的唯一方法是创建自制代码表,有没有更简单的方法可以做到?

在 Java 中,String是 Unicode 字符序列(或代码点,见脚注 1)。您通常可以忽略 Java 在其内存中的存储方式。重要的是,Java String可以容纳任何 Unicode 字符序列。

当谈论ASCII,UTF-8,ISO-8859-1或类似的东西时,它们是编码,规则如何将字符表示为字节。Java内置了对所有相关编码的支持,例如,获取可以使用的ASCII编码字节序列

byte[] asciiBytes = string.getBytes("US-ASCII");

现在您可以说asciiBytes拥有给定string的ASCII编码。

最后一个建议:尽量避免在代码核心进行编码,仅在读取或写入包含文本内容的文件时才使用它。像InputStreamReader这样的类允许您指定文件编码。


(1)字符和码位之间仍然存在细微的分歧,为了这个答案的目的,我们将忽略这一点。

你可以很容易地做到。例:

ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)

最新更新