Crear una cadena UTF-16 desde char *
Así que tengo una cadena C estándar:
char* name = "Jakub";
Y quiero convertirlo a UTF-16. Me di cuenta de que UTF-16 seráel doble de tiempo - un personaje tomados caracteres
Así que creo otra cadena:
char name_utf_16[10]; //"Jakub" is 5 characters
Ahora, creo que con caracteres ASCII solo usaré bytes inferiores, por lo que para todos ellos será como74 00
paraJ
y así. Con esa creencia, puedo hacer tal 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
}
}
Pero, con este proceso, terminé con"Jkb"
. No conozco ninguna forma de probar esto correctamente: acabo de enviar la cadena a Minecraft Bukkit Server. Y esto es lo que dijo al desconectar:
13:34:19 [INFO] Desconectandojkb?? [/127.0.0.1:53215]: ¡Servidor desactualizado!
Nota: Soy consciente de que Minecraft usa big-endian. El código anterior es solo un ejemplo, de hecho, tengo mi conversión implementada en clase.