2007年10月23日 星期二

C++ & UTF-8 string

自然人憑證內的中文是用UTF-8的格式儲存的,如果讀出來後直接用printf 顯示,中文會是亂碼,解決方法如下

#include <windows.h>
#include <locale.h>

char ppchDN[512]; //憑證資料
WCHAR wszUserName[1024+1]; // Unicode user name

MultiByteToWideChar( CP_UTF8, 0, ppchDN,-1, wszUserName,1024 ); //UTF-8 -> Unicode


setlocale(LC_ALL,"Chinese_Taiwan.950"); // 設定Codepage=950
wprintf(L"Issuer DN: %s\n",wszUserName); // Unicode -> 950 輸出