给你两个C函数(工作在C++下):.h文件:
#include <windows.h>
#include <winnls.h>jstring WindowsTojstring( JNIEnv* , char*);
char* jstringToWindows( JNIEnv* env, jstring jstr );.cpp程序:jstring WindowsTojstring(JNIEnv* env, char* str) {
jstring rtn = 0;
int slen = strlen(str);
wchar_t* buffer = 0;
if(slen == 0)
rtn = env->NewStringUTF(str); //UTF ok since empty string
else {
int length = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)str, slen, NULL, 0);
buffer = (wchar_t*)malloc(length * 2 + 1);
if(MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, (LPWSTR)buffer, length ) >0 )
rtn = env->NewString((jchar*)buffer, length);
}
if(buffer)
free(buffer);
return rtn;
}char* jstringToWindows(JNIEnv* env, jstring jstr)
{
int length = env->GetStringLength(jstr);
const jchar* jcstr = env->GetStringChars(jstr, 0);
char* rtn = (char*)malloc(length * 2 + 1);
int size = 0;
size = WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)jcstr, length, rtn, (length*2+1), NULL, NULL);
if(size <= 0)
return NULL;
env->ReleaseStringChars(jstr, jcstr);
rtn[size] = 0;
return rtn;
}