Java 将char[]传递给JNI时,这些字符有一些垃圾字符

Java 将char[]传递给JNI时,这些字符有一些垃圾字符,java,c,java-native-interface,Java,C,Java Native Interface,我使用NewStringUTF将一个char[10]从C传递到Java。当我用C打印char时,它打印正确。当我尝试在Java JNI中打印相同内容时,它正在打印特殊字符: 䑉ㅈ‶††††††††††††††††††† ††††† C代码: jstring acc_name =(*env)->NewStringUTF(env,account_st.name); printf("\n Account Name: %s",account_st.name); 输出: Account Name

我使用
NewStringUTF
将一个
char[10]
从C传递到Java。当我用C打印
char
时,它打印正确。当我尝试在Java JNI中打印相同内容时,它正在打印特殊字符:

䑉ㅈ‶††††††††††††††††††† †††††
C代码:

jstring acc_name =(*env)->NewStringUTF(env,account_st.name);
printf("\n Account Name: %s",account_st.name);
输出:

Account Name: Name

什么是帐户?剩下的代码在哪里?如果不这样做,您将无法得到超出随机猜测的问题的原因。您的字符[10]以null结尾的内容是否修改了UTF-8?这就是NewStringUTF所需要的。实际上我发现帐户代码有一些ascii字符。如何传递到Java?如果您确定它以null结尾,并且只包含(NUL除外),则可以将其视为以null结尾的修改UTF-8。否则,请将其作为字节[]传递,并根据您知道的编码(字符集)进行转换。您必须提供帐户名称的10个字节的真实内容,以及可能存在的值类型。