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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] как слона превратить в \u0421\u043b\u043e\u043d  (Прочитано 3634 раз)
thechicho
Гость
« : Январь 29, 2012, 04:12 »

подскажите как перевести. это юникод же? не понимаю, как выполнить это преобразование

слон
\u0421\u043b\u043e\u043d
« Последнее редактирование: Январь 29, 2012, 16:19 от thechicho » Записан
neversleep
Гость
« Ответ #1 : Январь 29, 2012, 08:37 »

По-моему как-то так:
Код
C++ (Qt)
const char the_Slon[] = "Слон";
 
QTextCodec *codec = QTextCodec::codecForName("Windows-1251");
QString s = codec->toUnicode(the_Slon, sizeof(the_Slon) - 1);
for (int i = 0, count = s.length(); i < count; i++)
   qDebug() << QString::number(s.at(i).unicode(), 16);
 
Цитировать
Starting ..\debug\codec.exe...
"421"
"43b"
"43e"
"43d"
Записан
thechicho
Гость
« Ответ #2 : Январь 29, 2012, 16:17 »

сенкс, помог Улыбающийся

Код
C++ (Qt)
QFile file("test.html");
       file.open(QIODevice::ReadOnly);
       QByteArray ba = file.readAll();
       file.close();
 
       QTextCodec *codec;
       codec = QTextCodec::codecForHtml(ba, QTextCodec::codecForName("windows-1251"));
       qDebug() << codec->name();
       QString struni = codec->toUnicode(ba);
       qDebug() << struni;
 
       struni.replace("\\", "\\\\");
       struni.replace("\"", "\\\"");
       struni.replace("\b", "\\b");
       struni.replace("\f", "\\f");
       struni.replace("\n", "\\n");
       struni.replace("\r", "");
       struni.replace("\t", "\\t");
 
       QString result;
 
       for (int i = 0; i < struni.count(); i++) {
           if (QString(struni.at(i)).contains(QRegExp("[А-я]"))) // [A-z0-9/<>\"\\s:\\.,]
               result.append("\\u0" + QString::number(struni.at(i).unicode(), 16));
           else
               result.append(struni.at(i));
       }
 
       qDebug() << endl << endl << endl << result;
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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