|
// jni.hをインクルードする必要があります。
// #include <jni.h>
// 処理概要 : jstring→Unicode→SJIS
LPSTR ToLPSTR(JNIEnv *env, jstring jsTarget)
{
LPSTR lpResult;
// 変換対象がNULLの場合、変換処理せずにNULLを返す。
if (jsTarget == NULL)
{
return NULL;
}
// jstring→Unicode 変換
const jchar* jcTarget =
env->GetStringChars(jsTarget, NULL);
// 変換元の文字列の長さを取得
int intTargetLen = wcslen(jcTarget);
// 結果格納用の領域を確保
lpResult = (LPSTR)calloc(
intTargetLen * 2 + 1, sizeof(char));
// Unicode→SJIS 変換
WideCharToMultiByte(
CP_ACP, 0,
jcTarget, intTargetLen, lpResult,
intTargetLen * 2 + 1, NULL, NULL);
// jcTargetの参照が必要なくなったことをJavaVMに通知
env->ReleaseStringChars(jsTarget, jcTarget);
// 変換結果を返す
return lpResult;
}
|