Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Multibyte char в wchar_t


Автор: Therion 13.10.2009, 11:10
Доброе время суток. У меня есть масив типа char где сохранена строка имеющая 2-х байтовые символы \xC3\xBC и \xC3\x9F (ü и ß). При преобоазовании функциями типа mbstowcs, я вместо одного нужного получаю по два символа Гј и Гџ. Как мне корректно сделать преобразования и получить нормальную строчку?
Заранее благодарен.

Автор: Alek86 13.10.2009, 11:17
можешь код показать?

Автор: Therion 13.10.2009, 11:38
Код

HTMLToRich(
        const std::string& inHTML,
        СRichText& outRichText
    )
{
    CHTMLParser parser;
    parser.enableDecodeEntity();
    parser.parse(inHTML);
    
    outRichText.Assign(parser.GetText(), parser.GetFormat());
}

К сожалению код CHTMLParser и СRichText показать не могу, да и писал не я их. Сюда приходит HTML код в котором и присутствуют эти символы. Парсер возвращает текст std::string, в котором и символы Гј и Гџ, которые являются частями нужных мне ü и ß. Нужно эту строку преобразовать в 2-х байтовую.

Автор: niXman 13.10.2009, 11:54
Therion, Есть подозрение, что исходные данные у тебя в кодировке UTF-8

Автор: xvr 13.10.2009, 13:55
MSDN:
Цитата

mbstowcs uses the current locale for any locale-dependent behavior;
т.е. выстави правильно локаль в начале программы (http://msdn.microsoft.com/en-us/library/x99tb11d(VS.80).aspx)

Автор: Therion 13.10.2009, 15:30
Спасибо большое. setlocale помогла.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)