Russian Qt Forum
Сентябрь 21, 2024, 10:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как получить представление строки в UTF-8? (простой вопрос)  (Прочитано 4209 раз)
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« : Октябрь 29, 2007, 10:00 »

Вроде простой вопрос, но я че-то не дорубаю.

Дано:

QString s = "Тест";

Вопрос:
Как в s получить "Тест" ?
(так выглядят байты в utf-8 кодировке для слова "Тест")

P.S. Qt 4.3.2

Целиком задача: передать функции, принимающей std::string, строку с содержимым "Тест".
Хочется использовать простой способ как-нибудь с помощью QTextCodec, QString::toUtf8()/toStdString()/toAscii() и т.п., а не вручную перекодировать.
« Последнее редактирование: Октябрь 29, 2007, 10:29 от vipet » Записан
Alexandr Az
Гость
« Ответ #1 : Октябрь 29, 2007, 10:34 »

QString s = "Тест";

Вопрос:
Как в s получить "Тест" ?
(так выглядят байты в utf-8 кодировке для слова "Тест")


Хех. Мдя уж.... Хехе...
хехеееееееее
..ять, сорри.
Вопрос твой звучит так  - как из кодировки UTF сделать абра кадабру... Народ тут наоборот, стараетси чтобы её не было...
А у меня встречный вопрос - в какой кодировке ты хочешь получить РўРµСЃС Непонимающий Вот и ответь для себя.....

Судя по всему, у тебя это 1251, следовательно,
для полного твоего счастья берем с ассистанта
QString string = "Тест";
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QByteArray encodedString = codec->fromUnicode(string);
Записан
vipet
Бывалый
*****
Offline Offline

Сообщений: 452


Просмотр профиля
« Ответ #2 : Октябрь 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() возвращает строку, которая и нужна! (после сохранения исходника в нужной кодировке)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.079 секунд. Запросов: 22.