|
// jni.hをインクルードする必要があります。
// #include <jni.h>
// 処理概要 : SJIS→Unicode→jstring
jstring ToJString(JNIEnv *env, LPSTR lpTarget)
{
jstring jsResult;
// 変換対象が NULL の場合、変換処理せずに NULL を返す。
if (lpTarget == NULL)
{
return NULL;
}
// 変換元の文字列の長さを取得
int intTargetLen = strlen(lpTarget);
// Unicode変換結果格納用の領域を確保
jchar* jcTarget = (jchar*)calloc(intTargetLen + 1, sizeof(jchar));
// SJIS→Unicode 変換
MultiByteToWideChar(
CP_ACP, MB_PRECOMPOSED,
lpTarget, strlen(lpTarget),
jcTarget, intTargetLen + 1);
// Unicode→jstring 変換
jsResult = env->NewString(jcTarget, wcslen(jcTarget));
// Unicode変換結果格納用の領域を開放
free(jcTarget);
// 変換結果を返す
return jsResult;
}
|