jstring 到 char* 在 c 用法中未转换为可打印格式

jstring to char* in c usage not converting into printable format

我是 运行 一个简单的 JNI 程序,使用 C 在 z/os 上调用 API。Java 程序有一个简单的 sayHello() 方法,就像这样-

public static String sayHello(){
    return "Hello World!!!";
}

调用该方法并打印输出的代码如下-

jmethodID mid=(*env)->GetStaticMethodID(env,cls2,sHStr,sigVoidString);
 jstring j = (jstring)(*env)->CallStaticObjectMethod(env,cls2, mid);
 const char *str = (*env)->GetStringUTFChars(env, j, NULL);
 printf("%s", str);
 (*env)->ReleaseStringUTFChars(env,j,str);

打印输出如下-

..%%?..?.%..

打开HEX显示如下,说明确实是HelloWorld!!!-

46666256766222
85CCF07F2C4111

我检查了一些关于相同问题的 SO 帖子,例如 this and this,每个帖子都建议使用我正在使用但没有成功的 GetStringUTFChars。这里有 z/os 的具体情况吗?

在这种情况下,__atoe() 函数的使用对我有用。