WideCharToMultiByte производит китайские символы при записи в регистр

У меня есть этот древний фрагмент кода для IE BHO, и я пытаюсь сохранить некоторые данные для него.

Я пытаюсь такой подход:

// key is an LPWSTR provided as a method parameter
// sValue is an LPWSTR provided as a method parameter

HKEY hKey = NULL;

HRESULT hRes = IEGetWriteableHKCU(&hKey);

if (SUCCEEDED(hRes) && hKey)
{
    CHAR mbStr[2048] = { 0 };
    WideCharToMultiByte(CP_UTF8, 0, sValue, lstrlen(sValue), mbStr, 2048, NULL, NULL);

     // Skipping error checking for now
    RegSetKeyValue(hKey, L"A\\Key\\I\\Can\\Write\\To", key, REG_SZ, mbStr, (DWORD)strnlen_s(mbStr, 2048));

    RegCloseKey(hKey);
}

Введенное мной значение записано и может быть успешно прочитано. Однако, когда я смотрю на него в regedit, я вижу китайские иероглифы. Это усложнит поиск и устранение неисправностей, поэтому я хотел бы, чтобы символы были написаны правильно.

Это, очевидно, какая-то проблема кодирования, но я не могу найти волшебную пулю для ее решения.

Спасибо!

0 ответов

Другие вопросы по тегам