漢字字符「你好」的Unicode編碼點分別爲4F60,597D。我從這個工具中獲得http://rishida.net/tools/conversion/中文漢字逆序排列的UTF-8編碼單元PHP和C++
下面的控制檯應用程序將打印出您的 的十六進制字節序列爲60:4F:7D:59。正如你所看到的,它與每個字符的unicode代碼點相反。先是60然後是4F,而不是4F然後是60.爲什麼這樣呢?誰是對的?工具或控制檯應用程序?或兩者 ?
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;
}
雖然在PHP中,當我使用這個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有結果相同的在線工具,但是當我用這個編碼使用php_printer.dll功能的打印機上打印你好,打印出來成爲恏絙,反之亦然。但是C++應用程序可以正確打印出來。什麼可能是錯誤的PHP?解決方案?
OMG,我非常愛你:)花了差不多一個星期,挖掘到PHP C源代碼,然後得到它的作品。謝謝。 mb_convert_encoding(「你好」,「UTF-16LE」,「UTF-8」) – William