Преобразование потока MBCS в UTF-8 и наоборот в C ++ - PullRequest
2 голосов
/ 17 декабря 2008

Я использую Visual C ++ (VS2005) и компилирую проект в многобайтовом наборе символов (MBCS). Однако программе необходимо общаться с веб-приложением (которое находится в utf-8) через XMLRPC. Поэтому я думаю, что, возможно, я смогу использовать MBCS для внутреннего использования и преобразовать строки в utf-8 перед отправкой их в модуль xmlrpc и преобразованием их обратно в MBCS после получения из webapi.

Мне интересно, как лучше конвертировать между MBCS и UTF-8 в VC ++?

Спасибо всем.

Ответы [ 3 ]

3 голосов
/ 17 декабря 2008

Вызовите MultiByteToWideChar , чтобы преобразовать вашу строку в Unicode, а затем вызовите WideCharToMultiByte , чтобы преобразовать Unicode в UTF-8. Повторите процесс в обратном порядке,

2 голосов
/ 17 декабря 2008

Вы можете попробовать wcstombs / mbstowcs .

1 голос
/ 17 декабря 2008

Вы также можете использовать CT2A и передать CP_UTF8 в качестве кодовой страницы, например ::

CT2A pszUTF8(_T("My DBCS string"), CP_UTF8);
// pszUTF8.m_psz contains the UTF8 string.

Чтобы вернуться снова:

CA2T pszT(_T("My UTF8 string"), CP_UTF8);
// pszT.m_psz contains the TCHAR string.
...