JNI中文处理问题小结[3]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

void ReleaseStringChars(jstring str, const jchar *chars)

此外,为了便于以UTF-8方式进行传输、存储,JNI还提供了几个操作UTF格式的方法:

jsize GetStringUTFLength(jstring str)
const
 char* GetStringUTFChars(jstring str, jboolean *isCopy)
void
 ReleaseStringUTFChars(jstring str, const char* chars)

GetStringChars返回的是Unicode格式的编码串,而GetStringUTFChars返回的是UTF-8格式的编码串。
要创建一个jstring,可以用如下方式:

jstring NewJString( JNIEnv * env, LPCTSTR str )
{

    if
 (!env || !str)
        return
 0;

    int
 slen = strlen(str);
    jchar * buffer = new jchar[slen];
    int
 len = MultiByteToWideChar(CP_ACP, 0, str, strlen(str), buffer, slen);

    if
 (len > 0 && len < slen)
        buffer[len] = 0;

    jstring js = env->NewString(buffer, len);
    delete
 [] buffer;
    return
 js;
}


而要将一个jstring对象转为一个char字符串数组,可以:

本文关键:JNI中文处理问题小结
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top