0

我正在尝试将 wchar_t* 转换为 char*。这是我的代码:

size_t result = wcstombs(returned, str, length + 1);
if (result == (size_t)-1) {
    int error = errno;
}

它确实失败了,并且错误充满了 92 (ENOPROTOOPT) - 协议不可用。

我什至尝试过设置语言环境:

setlocale(LC_ALL, "C");

还有这个:

setlocale(LC_ALL, "");

我很想用静态演员来扔角色!

4

1 回答 1

0

似乎问题在于源字符串是用非标准编码编码的(每个宽字符有两个 ASCII 字符),在调试器中看起来很好,但内部显然很糟糕。产生的错误代码显然没有记录,但这相当于根本无法解码所述文本。

于 2011-12-06T07:02:09.847 回答