UTF-16-Zeichenfolge aus char * erstellen
Also habe ich Standard-C-String:
char* name = "Jakub";
Und ich möchte es in UTF-16 konvertieren. Ich habe herausgefunden, dass UTF-16 sein wirddoppelt so lang - Ein Charakter dauertzwei Zeichen.
Also erstelle ich einen anderen String:
char name_utf_16[10]; //"Jakub" is 5 characters
Jetzt glaube ich, dass ich mit ASCII-Zeichen nur niedrigere Bytes verwenden werde, also wird es für alle so sein74 00
zumJ
und so weiter. Mit dieser Überzeugung kann ich folgenden Code erstellen:
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
}
}
Aber mit diesem Prozess endete ich mit"Jkb"
. Ich weiß nicht, wie ich das richtig testen kann - ich habe den String gerade an Minecraft Bukkit Server gesendet. Und so stand es beim Trennen:
13:34:19 [INFO] Verbindung wird getrenntjkb?? [/127.0.0.1:53215]: Veralteter Server!
Hinweis: Mir ist bewusst, dass Minecraft Big-Endian verwendet. Der obige Code ist nur ein Beispiel. Ich habe meine Konvertierung in der Klasse implementiert.