Название: Как получить представление строки в UTF-8? (простой вопрос) Отправлено: vipet от Октябрь 29, 2007, 10:00 Вроде простой вопрос, но я че-то не дорубаю.
Дано: QString s = "Тест"; Вопрос: Как в s получить "Тест" ? (так выглядят байты в utf-8 кодировке для слова "Тест") P.S. Qt 4.3.2 Целиком задача: передать функции, принимающей std::string, строку с содержимым "Тест". Хочется использовать простой способ как-нибудь с помощью QTextCodec, QString::toUtf8()/toStdString()/toAscii() и т.п., а не вручную перекодировать. Название: Re: Как получить представление строки в UTF-8? (простой вопрос) Отправлено: Alexandr Az от Октябрь 29, 2007, 10:34 QString s = "Тест"; Вопрос: Как в s получить "Тест" ? (так выглядят байты в utf-8 кодировке для слова "Тест") Хех. Мдя уж.... Хехе... хехеееееееее ..ять, сорри. Вопрос твой звучит так - как из кодировки UTF сделать абра кадабру... Народ тут наоборот, стараетси чтобы её не было... А у меня встречный вопрос - в какой кодировке ты хочешь получить РўРµСЃС ??? Вот и ответь для себя..... Судя по всему, у тебя это 1251, следовательно, для полного твоего счастья берем с ассистанта QString string = "Тест"; QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); QByteArray encodedString = codec->fromUnicode(string); Название: Re: Как получить представление строки в UTF-8? (простой вопрос) Отправлено: vipet от Октябрь 29, 2007, 11:37 Вопрос решился! По случайности, файл с исходником был сохранен не UTF-8 кодировке (как все исходники проекта), а в Ascii (win1251). После сохранения в utf8 все заработало как надо!!!!! И, действительно, можно обходиться без "абракадабры". :) Хех. Мдя уж.... Хехе... хехеееееееее ..ять, сорри. Вопрос твой звучит так - как из кодировки UTF сделать абра кадабру... Народ тут наоборот, стараетси чтобы её не было... А у меня встречный вопрос - в какой кодировке ты хочешь получить РўРµСЃС ??? Вот и ответь для себя..... Судя по всему, у тебя это 1251, следовательно, для полного твоего счастья берем с ассистанта QString string = "Тест"; QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); QByteArray encodedString = codec->fromUnicode(string); Рад, что мой вопрос вызвал столько (надеюсь положительных) эмоций! :) - Я использую UTF-8 - При старте проги вызывается QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); Т.е. этот кодек используется при toStdString(), toAscii() Вызов toStdString() возвращает строку, которая и нужна! (после сохранения исходника в нужной кодировке) |