PHP i C ++ dla jednostki kodu UTF-8 w odwrotnej kolejności w chińskim znaku

Punkt kodowy Unicode dla chińskiego słowa 你好 wynosi odpowiednio 4F60, 597D. które otrzymałem z tego narzędziahttp://rishida.net/tools/conversion/

Poniższa aplikacja konsoli wyświetli szesnastkową sekwencję bajtów 你好 jako 60: 4F: 7D: 59. Jak widać, jest to w odwrotnej kolejności niż kod Unicode dla każdego znaku. 60 najpierw, potem 4F, zamiast 4F, potem 60. Dlaczego tak jest? Kto ma rację? Narzędzia lub aplikacja konsoli? Lub obie ?

void printHex (char * buf, char *filename)
{
    FILE *fp;
    fp=fopen(filename, "w");

    if(fp == NULL) return;

    int len2 = sizeof(buf);
    int i;
    char store[10];
    for (i = 0; i < sizeof(buf); i++)
    {
        if (i > 0) fprintf(fp,":");
        //sprintf(store, );

        fprintf(fp,"%02X", buf[i]);
    }
    fprintf(fp,"\n");
    fclose(fp);
}

int main(int argc, char* argv[])
{
    char * str3 = (char*)(L"你好");
    printHex( str3, "C:\\Users\\william\\Desktop\\My Document\\test2.txt");

        return 0;
}

Będąc w PHP, gdy używam tej funkcji mb_convert_encoding.

echo bin2hex(mb_convert_encoding("你好", "UTF-16", "UTF-8")); //result : 4f60 597d
echo bin2hex(mb_convert_encoding("恏絙", "UTF-16", "UTF-8")); //result : 604f 7d59

PHP ma taki sam wynik jak narzędzie online, ale gdy używam tego kodowania do drukowania 你好 na drukarce przy użyciu funkcji php_printer.dll, wydruk staje się 恏 絙 i odwrotnie. Ale aplikacja C ++ może drukować poprawnie. Co może być nie tak z PHP? I rozwiązanie?

questionAnswers(1)

yourAnswerToTheQuestion