我使用C++从sqlite数据库中读取了德语文本(该文本在数据库查看器中看起来不错)。但是,当我在带有SetDlgItemText的对话框中显示它时,文本看起来像这样(参见图片)。

    CString strWarning(pStmt->GetColumnCString(nCol));
    SetDlgItemText(IDC_WARNING_MESSAGE, strWarning);

最佳答案

您的字符串看起来像是UTF-8编码的,Windows无法处理。

您需要将其转换为UTF-16并确保通过将项目的字符集选项更改为SetDlgItemText或指定Use Unicode Character Set来调用SetDlgItemTextW的宽版本。

您可以使用MultiByteToWideChar函数将字符串从UTF-8转换为UTF-16。

关于c++ - 使用SetDlgItemText不能正确显示德语字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20411881/

10-15 16:38