Java-将UTF-8字符串转换为二进制的正确方法是什么?

Java-将UTF-8字符串转换为二进制的正确方法是什么?,java,utf-8,binary,Java,Utf 8,Binary,我正在使用此代码将UTF-8字符串转换为二进制: publicstringtobinary(stringstr){ byte[]buf=str.getBytes(StandardCharsets.UTF_8); StringBuilder结果=新建StringBuilder(); 对于(int i=0;i

我正在使用此代码将UTF-8
字符串
转换为二进制:

publicstringtobinary(stringstr){
byte[]buf=str.getBytes(StandardCharsets.UTF_8);
StringBuilder结果=新建StringBuilder();
对于(int i=0;i
在我使用此代码之前:

私有字符串toBinary2(字符串str){
StringBuilder结果=新建StringBuilder();
对于(int i=0;i如果(ch每当您想要将文本转换为二进制数据(或转换为表示二进制数据的文本,就像您在这里所做的那样),您必须使用一些编码

您的
toBinary
使用UTF-8进行编码


您的
toBinary2
使用了一些非标准编码:它编码每个UTF-16码点*此代码片段可能会有所帮助

String s = "Some String";
byte[] bytes = s.getBytes();
StringBuilder binary = new StringBuilder();
for(byte b:bytes){
    int val =b;
    for(int i=;i<=s.length;i++){
        binary.append((val & 128) == 0 ? 0 : 1);
        val<<=1;
    }
}
System.out.println(" "+s+ "to binary" +binary);
String s=“一些字符串”;
byte[]bytes=s.getBytes();
StringBuilder二进制文件=新的StringBuilder();
for(字节b:字节){
int val=b;

对于(inti=;首先,您需要理解Java中没有“UTF-8字符串”这样的东西UTF-16代码单元的序列。您的
toBinary2
方法根本没有执行任何UTF-8编码,这就是它不正确的原因。您需要将代码的两部分分开,至少在您的脑海中是这样的:1)将字符串转换为二进制数据(
byte[]
),例如使用
getBytes
)2)将二进制数据转换为文本二进制表示。