【发布时间】:2019-03-22 01:51:47
【问题描述】:
我正在将一个字节数组从 Java 传递给 C,我认为 Java 和 C 以相同的方式表示 UTF char 字节。
我可以这样做吗:
jbyte *bytePtr = (*env)->GetByteArrayElements(env, javaByteArray, NULL);
// javaByteArray has java bytes for the UTF chars: 'A', 'B', 'C'
unsigned char *bytePtrC = (unsigned char *) bytePtr;
printf("%c %c %c \n", bytePtrC, bytePtrC+1, bytePtrC+2);
// will this print A B C ?
【问题讨论】:
-
Afaik 不,C 使用 Ascii(8 位),而 Java 使用 UTF-16(16 位)
-
@hellow C 不一定“使用 Ascii(8 位)”。
-
@hellow:C 标准不需要 ASCII。许多 C 实现使用 ASCII,但也有其他选择。并且 C 不限于八位字符。除了
char不受C 标准限制为8 位之外,C 还支持wchar_t类型的宽字符。
标签: java c java-native-interface utf