Java-目标C字符UTF-8问题

Java-目标C字符UTF-8问题,java,utf-8,char,Java,Utf 8,Char,我对Java UTF-8转换有点问题。我有以下目标C代码: const char *p = [[NSString stringWithFormat:@"0x%@",md5Hash] UTF8String]; 其中md5Hash是NSString,我需要找到一种方法在Java中声明相同的charp,但没有找到如何将char设置为UTF-8 有什么想法或建议吗?我不知道Objective C,但在Java中,字符是UTF-16,字符串内部字符缓冲区就是这样。如果需要,您可以从和转换为UTF-8:

我对Java UTF-8转换有点问题。我有以下目标C代码:

const char *p = [[NSString stringWithFormat:@"0x%@",md5Hash] UTF8String];
其中md5Hash是
NSString
,我需要找到一种方法在Java中声明相同的
charp
,但没有找到如何将char设置为UTF-8


有什么想法或建议吗?

我不知道Objective C,但在Java中,字符是UTF-16,字符串内部字符缓冲区就是这样。如果需要,您可以从和转换为UTF-8:

// creates a String from the bytes understanding them as UTF-8 chars
byte[] data = ...
new String(data, "UTF-8"); 

希望对你有帮助


注意:如果您需要流式处理解决方案,您也可以使用InputStreamReader和OutputStreamWriter进行同样的转换,但这是另一个故事…

我不知道Objective C,但Java中的字符是UTF-16,字符串内部字符缓冲区就是这样。如果需要,您可以从和转换为UTF-8:

// creates a String from the bytes understanding them as UTF-8 chars
byte[] data = ...
new String(data, "UTF-8"); 

希望对你有帮助


注意:如果您需要流式处理解决方案,您也可以使用InputStreamReader和OutputStreamWriter进行同样的转换,但这是另一回事……

在Java中,字符串包含unicode字符,在将其转换为字节数组之前,您不需要考虑其编码。看看如果您有一个字节数组并希望将其设置为字符串,则还需要指定编码。String类有一个constrcutor,您可以在其中传递字节数组及其编码作为参数


IO类还可以使用特定的编码在二进制流中写入/读取字符串。查看
OutputStreamWriter
InputStreamReader
的构造函数

在Java中,字符串包含unicode字符,在将其转换为字节数组之前,您不关心其编码。看看如果您有一个字节数组并希望将其设置为字符串,则还需要指定编码。String类有一个constrcutor,您可以在其中传递字节数组及其编码作为参数


IO类还可以使用特定的编码在二进制流中写入/读取字符串。查看
OutputStreamWriter
InputStreamReader
的构造函数

结论:在Java中,如果需要文本,请使用字符串;如果需要字节,请使用字节[]。您不应该关心Java中字符/字符串的内部表示。仅在外部源/输出中从/转换为表示。结论:在Java中,如果需要文本,请使用字符串;如果需要字节,请使用字节[]。您不应该关心Java中字符/字符串的内部表示。仅从/转换为外部源/输出中的表示。