我无法在任何地方找到这个问题的答案.
如何在C++中将字符串从UTF-8转换为ANSI(扩展ASCII)?
我是 C++ 的菜鸟,所以我很抱歉提出愚蠢的问题。
我有一段文字:Павло
我从我正在处理的一段代码中的控制台输出中得到它。我知道这是隐藏在它后面的西里尔字。它的真正价值是“?????”。
使用在线编码检测器,我发现要正确阅读此文本,我必须将其从 UTF-8 转换为 Windows 1252。
我怎样才能用代码做到这一点?
我试过这个,它给出了一些结果,但它输出了 5 个问号(至少是预期的)
    wchar_t *CodePageToUnicode(int codePage, const char *src)
{
    if (!src) return 0;
    int srcLen = strlen(src);
    if (!srcLen)
    {
        wchar_t *w = new wchar_t[1];
        w[0] = 0;
        return w;
    }
    int requiredSize = MultiByteToWideChar(codePage,
        0,
        src, srcLen, 0, 0);
    if (!requiredSize)
    {
        return 0;
    }
    wchar_t *w = new wchar_t[requiredSize + 1];
    w[requiredSize] = 0;
    int retval = MultiByteToWideChar(codePage,
        0,
        src, srcLen, w, requiredSize);
    if (!retval)
    { …