Crie uma string UTF-16 do char *
Então eu tenho string C padrão:
char* name = "Jakub";
E eu quero convertê-lo para UTF-16. Eu descobri que UTF-16 seráo dobro do tempo - um personagem levadois chars.
Então eu crio outra string:
char name_utf_16[10]; //"Jakub" is 5 characters
Agora, eu acredito que com caracteres ASCII eu vou usar apenas bytes menores, então para todos eles será como74 00
paraJ
e assim por diante. Com essa crença, posso fazer esse código:
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
}
}
Mas, com esse processo, acabei com"Jkb"
. Eu não sei como testar isso corretamente - acabei de enviar a string para o Minecraft Bukkit Server. E isso é o que disse ao desconectar:
13:34:19 [INFO] Desconectandojkb?? [/127.0.0.1:53215]: Servidor desatualizado!
Nota: Estou ciente de que o Minecraft usa o big-endian. O código acima é apenas um exemplo, na verdade, tenho minha conversão implementada na aula.