Мне нужно преобразовать строку 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.S. Если кто-то должен знать, я делаю игру с использованием cocos2d-x, и я пытаюсь получить строку, используя обратные вызовы JNI. JNI имеет UTF-версию функций GetString...
, но они являются ошибками в соответствии с моим собственным опытом и Wikipedia, поэтому мне нужно преобразовать строки, используя необработанные функции.
В какое время вы жили? Возможно, в ОС уже есть функция. Но в остальном я просто читал в одной кодовой точке за раз из строки UTF-16 - возможно, за два шорта, - а затем записывал ее как символы UTF-8, а затем повторял. Чтобы заранее распределить буфер, вы, вероятно, догадаетесь, что он будет того же размера, что и UTF-16 или короче, а затем перераспределите, если вы достигнете предела. – Rup
Этот код используется на Android. –
Как я упоминал в вопросе, у меня нет доступа к нему :( –