2014-01-16 7 views
0

UTF-16 문자열을 UTF-8 문자열로 변환해야합니다.JNI UTF-16 문자열을 표준 C++ UTF-8 문자열로 변환하십시오.

const unsigned short *utf16string = ...; 
const char *utf8string = convertUTF16toUTF8(utf16string); 

아무도 찾을 수 없습니까? const char* convertUTF16toUTF8(const unsigned short* utf16string) 기능을 찾고 있습니까?

유형을 변경할 수 없습니다. 아쉽게도 C++ 11에 액세스 할 수 없습니다. 나는 몇 시간 동안 내 머리를 때리고 있었고 어떤 해결책도 찾을 수 없었다.

도와주세요. 나는 너를 믿는다. StackOverflow!

P. 아무도 알 필요가 없다면, 나는 cocos2d-x를 사용하여 게임을 만들고 있고 JNI 콜백을 사용하여 문자열을 얻으려고합니다. JNI는 GetString... 함수의 UTF 버전을 가지고 있지만 아직 내 경험에 따라 버그가 있고 Wikipedia이므로 원시 함수를 사용하여 문자열을 변환해야합니다.

+0

어떤 환경입니까? 이미 OS에는 기능이있을 수 있습니다. 하지만 그렇지 않으면 UTF-16 문자열 (한 번에 두 개의 반바지 이상)에서 한 번에 하나의 코드 포인트를 읽은 다음 UTF-8 문자로 쓰고 반복합니다. 미리 버퍼를 할당하려면 아마도 UTF-16 이하의 크기와 같을 것입니다. 그런 다음 제한을 초과하면 다시 할당하십시오. – Rup

+0

이 코드는 Android에서 사용됩니다. –

+0

내가 질문에 언급했듯이 나는 그것에 접근 할 수 없다 : ( –

답변

2

간단하고 작은 C++ 라이브러리가 필요한 경우 UTF8-CPP을 사용하여 UTF-8과 UTF-16간에 변환 할 수 있습니다.