유니 코드 문자가있는 Java 문자열 리터럴을 C 문자열 리터럴로 전송해야합니다.이 문자열은 JNIEnv.NewString
으로로드 할 수 있습니다.JNI 코드 용 Java 문자열 이스케이프
위의 메서드는 unsigned short
(jchar)의 배열에 대한 포인터를 사용합니다. 나는 다음과 같은 코드를 사용해 보았습니다 :
unsigned short str[] = {65, 66, 67};
jstring java_str = (*env)->NewString(env, str, 3);
그러나 이것은 많은 공간이 필요하고 사람이 읽을 수 없으며 유지하기 어렵습니다.
문자열 리터럴을 C에서 unsigned short[]
으로 변환하는 방법이 있습니까? 그렇지만 여전히 Java의 UTF-16 문자를 사용할 수 있습니까?
이 탈출을 프로그래밍 방식으로 수행 할 수 있습니까? 즉 java.lang.String
을 C 소스 코드에서 작동 할 문자열 리터럴로 변환합니다.
C에는 넓은 문자열이 있지만 불행하게도 C11 –
을 사용할 수있는 경우를 제외하고 구현에서 사용하는 문자 집합은 읽기 전용입니다. 하지만 C 소스 코드를 생성하려고합니까? –
필자는 기본적으로 수천 개의 문자열을 수동으로 추출하지 않으므로 리터럴을 생성하는 것이 좋습니다. 그게 가능하지 않으면 나는 그들을 수동으로 벗어날 수 있습니다. – konsolas