【发布时间】:2012-11-07 00:17:34
【问题描述】:
我正在尝试将多字节 (UTF) 字符串转换为 Widechar 字符串,但 mbsnrtowcs 总是失败。这是输入和预期的字符串:
char* pInputMultiByteString = "A quick brown Fox jumps \xC2\xA9 over the lazy Dog.";
wchar_t* pExpectedWideString = L"A quick brown Fox jumps \x00A9 over the lazy Dog.";
特殊字符是版权符号。
当我使用 Windows MultiByteToWideChar 例程时,此转换工作正常,但由于该 API 在 linux 上不可用,我必须使用 mbsnrtowcs - 这是失败的。我也尝试过使用其他角色,但总是失败。唯一的期望是,当我仅使用基于 ASCII 的输入字符串时,mbsnrtowcs 可以正常工作。我做错了什么?
【问题讨论】:
-
如果你想要它便携,为什么不使用 boost::nowide?span>
-
@Pavel 我必须使用 mbsnrtowcs
-
@tunafish24:如果
mbsnrtowcs不能做到,你会怎么做?