我正在使用 C 的 z/os 上的调用 API 运行一个简单的 JNI 程序。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和 this每个人都建议使用我正在使用但没有成功的 GetStringUTFChars。这里有什么特定于 z/os 的事情吗?
最佳答案
在这种情况下,__atoe() 函数的使用对我有用。
关于java - jstring 到 char* 在 c 用法中未转换为可打印格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33496453/