特殊字符 - 字符串 - 二进制 - Java

Special characters - String - Binary - Java

我尝试将字符串转换为二进制并返回。它工作得很好,但是如果我在字符串中有一个特殊字符,比如 €,它会给我一个问号。我该如何解决这个问题?

这是我将字符串转换为二进制的代码:

// stringToBinary
public static String stringToBinary(String message) {
    byte[] bytes = message.getBytes();
    StringBuilder binary = new StringBuilder();
    for (byte b : bytes) {
        int val = b;
        for (int i = 0; i < 8; i++) {
            binary.append((val & 128) == 0 ? 0 : 1);
            val <<= 1;
        }
        binary.append(' ');
    }
    return binary.toString();
}

我用这个代码对每个 "block":

// binaryToChar
public static char binaryToChar(String block) {
    int ascii = Integer.parseInt(block, 2);
    return (char) ascii;
}

感谢您的帮助,抱歉我的英语不好 ;)

编辑:我在此列表中找到了 €:>>Klick<< 所以它是正确的, € 在二进制中显示为 10000000,但在重新转换为 String/char.

后它不是这样显示的

哇,我可以回答我自己的问题了:O

我稍微编辑了我的代码并尝试了一些东西,现在可以了:

// stringToBinary
public static String stringToBinary(String message) {
    StringBuilder binary = new StringBuilder();
    for (char c : message.toCharArray()) {
        int i = (int) c;
        binary.append(Integer.toBinaryString(i));
        binary.append(' ');
    }
    return binary.toString();
}

感谢所有考虑过我的问题的人:)