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

String 特殊字符-字符串-二进制-Java,string,binary,special-characters,String,Binary,Special Characters,我尝试将字符串转换为二进制并返回。它工作得很好,但是如果我在字符串中有一个特殊字符,比如€,它会给我一个问号。我怎样才能解决这个问题 这是我将字符串转换为二进制的代码: // stringToBinary public static String stringToBinary(String message) { byte[] bytes = message.getBytes(); StringBuilder binary = new StringBuilder(); fo

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

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

// 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();
}
谢谢你的帮助,很抱歉我的英语不好;)


编辑:我在这个列表中找到了欧元:>>克利克哇,我可以回答我自己的问题: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();
}

感谢所有想到我的问题的人:)

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

我稍微编辑了我的代码,并尝试了一些方法,现在它可以工作了:

// 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();
}

感谢所有想到我的问题的人:)

你怎么称呼“特殊角色”?有什么不在ASCII集合中的吗?任何值高于255的问题?我在一秒钟前编辑了我的问题:DOkay,我想我看到了问题所在。您能检查您的欧元字符在Java中转换为什么数值吗?(您必须检查。可能有一些变体,但我认为Java默认为UTF8或Unicode。)它被转换为
10000000
。它也不适用于像这样的角色中 或漢 @JongWare这是意外的-这可能是某些本地编码或代码中的错误。这和我描述的完全不一样。这需要有更多Java经验的人来研究。你称之为“特殊字符”是什么?有什么不在ASCII集合中的吗?任何值高于255的问题?我在一秒钟前编辑了我的问题:DOkay,我想我看到了问题所在。您能检查您的欧元字符在Java中转换为什么数值吗?(您必须检查。可能有一些变体,但我认为Java默认为UTF8或Unicode。)它被转换为
10000000
。它也不适用于像这样的角色中 或漢 @JongWare这是意外的-这可能是某些本地编码或代码中的错误。这和我描述的完全不一样。这需要有更多Java经验的人来研究。