Название: [РЕШЕНО] как слона превратить в \u0421\u043b\u043e\u043d
Отправлено: thechicho от Январь 29, 2012, 04:12
подскажите как перевести. это юникод же? не понимаю, как выполнить это преобразование
слон \u0421\u043b\u043e\u043d
Название: Re: как слона превратить в \u0421\u043b\u043e\u043d
Отправлено: neversleep от Январь 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"
Название: Re: как слона превратить в \u0421\u043b\u043e\u043d
Отправлено: thechicho от Январь 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;
|