JNI在許多需要指定特定編碼的地方引用「Unicode字符串」和「Unicode字符」。「Unicode字符串」對於JNI文檔有什麼意義?
This頁面列表JNI函數描述了幾個函數作爲接受或生成「Unicode字符」。例如,
NewString
jstring NewString(JNIEnv *env, const jchar *unicodeChars, jsize len);
構造從Unicode字符陣列的新java.lang.String對象。
我搜索了JNI書爲更好的說明,但它給我留下了更多的困惑:
的JNI支持與Unicode和UTF-8 字符串轉換。 Unicode字符串表示的字符爲16位值[...]
這說明混淆了我,因爲它表明,所有的角色會在16位編碼,但是這是不夠的Unicode(它也奇怪的是,Unicode和UTF-8是替代品)。 「UTF-16」未出現在JNI書籍的文本中。也許JNI文檔是在一個更無辜的時間寫的,當時只有BMP和16位真的夠了嗎?
由於jchar
是16位,我的猜測是「Unicode」在這裏意味着UTF-16,但我一點也不確定。
更新:我注意到UTF-16的維基頁面說「Unicode」是我們現在稱爲UCS-2的舊術語。不過,它也表示Java現在使用UTF-16。從那以後,我仍然懷疑JNI文檔中的「Unicode」是指標準的UTF-16,但我通常不會使用JNI甚至是Java,所以我希望某個感覺有權威的人加入。
我明白你的觀點。我也會假設「Unicode字符串」真的意味着UTF-16編碼。 –