2014-01-16 1 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.S. Если кто-то должен знать, я делаю игру с использованием cocos2d-x, и я пытаюсь получить строку, используя обратные вызовы JNI. JNI имеет UTF-версию функций GetString..., но они являются ошибками в соответствии с моим собственным опытом и Wikipedia, поэтому мне нужно преобразовать строки, используя необработанные функции.

+0

В какое время вы жили? Возможно, в ОС уже есть функция. Но в остальном я просто читал в одной кодовой точке за раз из строки UTF-16 - возможно, за два шорта, - а затем записывал ее как символы UTF-8, а затем повторял. Чтобы заранее распределить буфер, вы, вероятно, догадаетесь, что он будет того же размера, что и UTF-16 или короче, а затем перераспределите, если вы достигнете предела. – Rup

+0

Этот код используется на Android. –

+0

Как я упоминал в вопросе, у меня нет доступа к нему :( –

ответ

2

Если вам нужна простая и маленькая библиотека C++, вы можете использовать UTF8-CPP для преобразования между UTF-8 и UTF-16.

Смежные вопросы