I am trying to return an ARABIC string from a JNI call.
The java method is as follows
private native String ataTrans_CheckWord(String lpszWord, String lpszDest, int m_flag, int lpszReserved);
lpszWord: input english
lpszDest: ignore
m_flag: ignore lpszReserved: ignore
Now when I use javah to create a header file, I get a C ++ header file with this signature
JNIEXPORT jstring JNICALL Java_MyClass_ataTrans_1CheckWord (JNIEnv* env, jobject, jstring, jstring, jint , jint)
Now in this C ++ code I have expressions like
JNIEXPORT jstring JNICALL Java_MyClass_ataTrans_1CheckWord(JNIEnv* env, jobject, jstring jstrInput, jstring, jint , jint)
{
char aa[10];
char* bb;
char** cc;
bb = aa;
cc = &bb;
jstring tempValue;
const char* strCIn = (env)->GetStringUTFChars(jstrInput , &blnIsCopy);
int retVal = pDllataTrans_CheckWord(strCIn, cc, m_flag, lpszReserved);
printf("Orginal Arabic Conversion Index 0: %s \n",cc[0]);
tempValue = (env)->NewString((jchar* )cc[0],10);
printf("JSTRING UNICODE Created : %s \n",tempValue);
return tempValue;
}
I believe that the contents of ARABIC are inside a pointer to a cc pointer. Finally, in my java code, I have such a call
String temp = myclassInstance.ataTrans_CheckWord("ABCDEFG", "",1, 0);
System.out.println("FROM JAVE OUTPUT : "+temp);
I just can't return some ARABIC character to my JAVA code. Is something wrong, what am I doing? I tried various alternatives such as
tempValue = env->NewStringUTF("شسيشسيشسيشس");
and return tempValue, but no luck. Its always trash on the java side.