Преобразование Unicode в многобайтовый - PullRequest
5 голосов
/ 06 октября 2009

У меня небольшая проблема. Я хочу преобразовать юникод в многобайтовый код.

Ответы [ 6 ]

7 голосов
/ 06 октября 2009
std::string NarrowString(const std::wstring& str, const char* localeName = "C")
{
  std::string result;
  result.resize(str.size());

  std::locale loc(localeName);

  std::use_facet<std::ctype<wchar_t> >(loc).narrow(
    str.c_str(), str.c_str() + str.size(), '?',  &*result.begin());

  return result;
}

Он должен использовать текущую локаль для преобразования строки Юникода. Для символов, которые не принадлежат кодовой странице, '?' символ используется. Протестировано с Visual C ++ 2005/2008.

5 голосов
/ 06 октября 2009

Три варианта от руки:

3 голосов
/ 06 октября 2009

wcstombs прекрасно работает для меня:)

1 голос
/ 06 октября 2009

В большинстве случаев будет достаточно WideCharToMultiByte ().

0 голосов
/ 06 октября 2009

использование WideCharToMultiByte

0 голосов
/ 06 октября 2009

Есть WideCharToMultiByte функция winapi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...