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.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage