Создать строку UTF-16 из символа *
Итак, у меня есть стандартная строка C:
char* name = "Jakub";
И я хочу конвертировать его в UTF-16. Я разобрался, что UTF-16 будетв два раза длиннее - один персонаж беретдва символы.
Поэтому я создаю еще одну строку:
char name_utf_16[10]; //"Jakub" is 5 characters
Теперь я считаю, что с символами ASCII я буду использовать только младшие байты, поэтому для всех них это будет74 00
заJ
и так далее. С этим убеждением я могу сделать такой код:
void charToUtf16(char* input, char* output, int length) {
/*Todo: how to check if output is long enough?*/
for(int i=0; i<length; i+=2) //Step over 2 bytes
{
//Lets use little-endian - smallest bytes first
output[i] = input[i];
output[i+1] = 0; //We will never have any data for this field
}
}
Но с этим процессом я закончил"Jkb"
, Я не знаю способа проверить это должным образом - я только что отправил строку на Minecraft Bukkit Server. И вот что он сказал при отключении:
13:34:19 [INFO] ОтключениеJKB?? [/127.0.0.1:53215]: устаревший сервер!
Примечание: Я знаю, что Minecraft использует big-endian. Приведенный выше код является просто примером, на самом деле, мое преобразование реализовано в классе.