ฉันมีตัวอักษรสตริง Java ที่มีอักขระ Unicode ที่ต้องถ่ายโอนไปยังตัวอักษรสตริง C ซึ่งสามารถโหลดได้ด้วย JNIEnv.NewString
น่าเสียดายที่วิธีการข้างต้นใช้ตัวชี้ไปยังอาร์เรย์ unsigned short
(jchar) ฉันได้ลองใช้รหัสดังต่อไปนี้:
unsigned short str[] = {65, 66, 67};
jstring java_str = (*env)->NewString(env, str, 3);
อย่างไรก็ตาม การดำเนินการนี้ต้องใช้พื้นที่มาก มนุษย์ไม่สามารถอ่านได้ และดูแลรักษาได้ยาก
มีวิธีแปลงสตริงตัวอักษรเป็น unsigned short[]
ใน C ในขณะที่ยังสามารถใช้อักขระ UTF-16 ของ Java ได้หรือไม่
การหลบหนีนี้สามารถทำได้โดยทางโปรแกรมหรือไม่ เช่นแปลง java.lang.String
เป็นตัวอักษรสตริงที่จะทำงานในซอร์สโค้ด C