WEB开发网
开发学院手机开发Android 开发 Android 从 JNI 中传入 UTF8 的字符到 Java 阅读

Android 从 JNI 中传入 UTF8 的字符到 Java

 2010-03-26 21:14:00 来源:WEB开发网   
核心提示:由于env->NewStringUTF支持的是 Modified UTF-8,所以这个API不能用来从JNI中传入标准的UTF8字符到Java,Android 从 JNI 中传入 UTF8 的字符到 Java,我们有两种解决方法:Java代码ReturnUTF8.javaview plaincopy to cli

由于env->NewStringUTF支持的是 Modified UTF-8,所以这个API不能用来从JNI

中传入标准的UTF8字符到Java。

我们有两种解决方法:

Java代码

ReturnUTF8.java

view plaincopy to clipboardprint?

public class ReturnUTF8 {

static {

System.loadLibrary("ReturnUTF8Jni");

}

public static native byte[] method1();

public static native Object method2();

public static void main(String[] args) {

try {

byte[] buffer = ReturnUTF8.method1();

String s1 = new String(buffer, "UTF-8");

System.out.println("s1 = " + s1);

String s2 = ReturnUTF8.method2().toString();

System.out.println("s2 = " + s2);

} catch (java.io.UnsupportedEncodingException e) {

e.printStackTrace();

}

}

}

public class

ReturnUTF8 {

static {

System.loadLibrary("ReturnUTF8Jni");

}

public static native byte[] method1();

public static native Object method2();

public static void main(String[] args) {

try {

byte[] buffer = ReturnUTF8.method1();

String s1 = new String(buffer, "UTF-8");

System.out.println("s1 = " + s1);

String s2 = ReturnUTF8.method2().toString();

System.out.println("s2 = " + s2);

} catch (java.io.UnsupportedEncodingException e) {

e.printStackTrace();

}

}

}

# javac ReturnUTF8.java

# javah ReturnUTF8

-> 这里会生成一个ReturnUTF8.h头文件

C++代码

ReturnUTF8.cpp

view plaincopy to clipboardprint?

#include "ReturnUTF8.h"

JNIEXPORT jbyteArray JNICALL Java_ReturnUTF8_method1

(JNIEnv *env, jclass cls)

{

1 2  下一页

Tags:Android JNI 传入

编辑录入:coldstar [复制链接] [打 印]
赞助商链接