網上很多資料都要求我們把嵌入CEF3的工程屬性改爲支持UNICODE字符集。當然如果條件允許無疑是比較好的,因爲CEF3的DLL應該就是Unicode字符集的。但是如果我們已經完成的工程是建立在多字節字符集上的,要把它改爲UNICODE字符集無疑非常麻煩。
如果我們的工程是支持多字節字符集,同樣可以直接嵌入CEF3,不過在向CEF3傳入中文字符的時候要先將字符轉碼,下面提供一個轉碼函數。
static char* MBSCToCEF(const char* mbcsStr)
{
wchar_t* wideStr;
char* utf8Str;
int charLen;
charLen = MultiByteToWideChar(CP_UTF8, 0, mbcsStr, -1, NULL, 0);
charLen=strlen(mbcsStr)+1;
wideStr = (wchar_t*) malloc(sizeof(wchar_t)*charLen);
MultiByteToWideChar(CP_ACP, 0, mbcsStr, -1, wideStr, charLen);
charLen = WideCharToMultiByte(CP_UTF8, 0, wideStr, -1, NULL, 0, NULL, NULL);
utf8Str = (char*) malloc(charLen);
WideCharToMultiByte(CP_UTF8, 0, wideStr, -1, utf8Str, charLen, NULL, NULL);
free(wideStr);
return utf8Str;
}