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() 函数的使用对我有用。
我是 运行 一个简单的 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() 函数的使用对我有用。