java - 使用二进制编码将 byte[] 转换为 String

标签 java string character-encoding

我想将每个 bytebyte[] 转换为 char,然后将这些字符放入字符串中。这就是某些数据库的所谓“二进制”编码。到目前为止,我能找到的最好的是这个巨大的样板:

byte[] bytes = ...;
char[] chars = new char[bytes.length];
for (int i = 0; i < bytes.length; ++i) {
    chars[i] = (char) (bytes[i] & 0xFF);
}
String s = new String(chars);

Java SE 或 Apache Commons 是否还有其他选择?我希望我能有这样的东西:

final Charset BINARY_CS = Charset.forName("BINARY");
String s = new String(bytes, BINARY_CS);

但我不愿意编写字符集及其编解码器(目前)。 JRE 或 Apache Commons 中有这样现成的二进制 Charset 吗?

最佳答案

您可以对 7 位字符使用 ASCII 编码

String s = "Hello World!";
byte[] b = s.getBytes("ASCII");
System.out.println(new String(b, "ASCII"));

或 8 位 ascii

String s = "Hello World! \u00ff";
byte[] b = s.getBytes("ISO-8859-1");
System.out.println(new String(b, "ISO-8859-1"));

编辑

System.out.println("ASCII => " + Charset.forName("ASCII"));
System.out.println("US-ASCII => " + Charset.forName("US-ASCII"));
System.out.println("ISO-8859-1 => " + Charset.forName("ISO-8859-1"));

打印

ASCII => US-ASCII
US-ASCII => US-ASCII
ISO-8859-1 => ISO-8859-1

关于java - 使用二进制编码将 byte[] 转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8419415/

相关文章:

perl - Perl 中字符串的长度与字符编码无关

html - 元字符集 windows-1252 与 UTF-8

java - Java 中的数字模式打印

java - 如何使用外部字体 TTF 文件定义外语字体,然后在 JRXML 文件中使用它?

java - 无法通过 QAndroidJniObject 创建 java 类

Java 以一种干净的方式动态地在多个按钮上使用事件处理程序

C# 计算循环中传递的数字数量

java - 将字符串转换为日期(复杂时区)

C#格式化一个字符串

java - 从数据框中的列中删除特殊字符