LINUX.ORG.RU

Из 866 кириллица в utf-8 или windows 1251

 , ,


0

4

Парсю дбф столкнулся с тем что символы в строке на кириллице в векторе v и кодировка 866 использую код ниже для перегона строки из 1251 в 866 и сравниваю, но там символы три штуки одинакового кода(посмотрел в дебаггере) видимо что-то не то. Вот код

        QString dnp="ДНП";
        QByteArray ba = dnp.toLocal8Bit();
        const char *c_str2 = ba.data();
        QString buf = QTextCodec::codecForName("CP1251")->toUnicode(c_str2);
        delete[] c_str2;
        dnp = QTextCodec::codecForName("IBM-866")->fromUnicode(buf).data();
        if(strcmp(v[5].c_str(),dnp.toStdString().c_str())==0)
            qDebug()<<v[5].c_str();
Мне бы перегнать вектор v в utf-8 либо 1251, а дальше я справлюсь



Последнее исправление: bad_master (всего исправлений: 2)

Ответ на: комментарий от Stil

delete[] c_str2;

что ты делаешь?

Память очищаю, чтобы утечки не было. Короче мне надо сравнить переменную dnp с v[5].c_str(). dnp в кодировке windows-1251, v[5] в кодировке 866. Я этим кодом преобразовал dnp в 866, но видимо не правильно. Поэтому хочу сделать наоборот v[5] преобразовать лучше конечно в utf-8, но и windows-1251 сойдет, а уже потом windows-1251 перегнать в utf-8 в интернете примеров полно.

bad_master
() автор топика
Ответ на: комментарий от Silerus

а вот про это:

я просто оставлю это здесь )))

QByteArray QString::toLocal8Bit() const

Returns the local 8-bit representation of the string as a QByteArray.

On Unix systems this is equivalent to toUtf8().

а уж про то, что этот ТС, не приходя в сознание, получает через data() вутренний указатель на данные, а потом натравливает на него delete, я ваще молчу.

aol ★★★★★
()
Ответ на: комментарий от aol

а уж про то, что этот ТС, не приходя в сознание, получает через data() внутренний указатель на данные, а потом натравливает на него delete, я ваще молчу.

Так вот для кого хруст придумали!

wandrien ★★
()
Ответ на: комментарий от wandrien

Я пока с этим фалом возился все шишки пособирал и на все грабли встал. Вначале драйвер его не открывал, потом программы не конвертировали, потом в файле неправильно указаны длины полей, потом мамонтовская кодировка, теперь после преобразования в нормальную не влезает в озу, а дальше что?

bad_master
() автор топика
Ответ на: комментарий от PPP328

я думаю, что данный индивид, рано или поздно наберётся опыта, и все у него будет хорошо. А так же мне нравится, что раст позволяет избегать глупых ошибок, на вроде объявил -> использовал, а создать забыл (не думаю что забывчивость, как следствие увлечённости процессом - делает из кого то плохого программиста). Проще говоря: у каждого языка есть прикольные фишки и не очень прикольные недостатки.

Silerus ★★★★
()
Ответ на: комментарий от wandrien

С одной стороны, работодателя жалко.

А с другой, нет, мвахаха. 😈

Эти работодатели думают, что могут нанять джуна и выдавать ему задачи миддла. Но есть ньюанс)

goingUp ★★★★★
()
Ответ на: комментарий от alex1101

Меня удивляет, что люди, которые вроде умеют программировать, типа @LINUX-ORG-RU стесняются подать свое резюме на нормальную работу. Или спуфинга, который наверное выпекал бы булки до сих пор, если бы работа не нашла его сама)

goingUp ★★★★★
()
Ответ на: комментарий от Silerus

я думаю, что данный индивид, рано или поздно наберётся опыта, и все у него будет хорошо.

Данный индивид с 2019 года тут, прогресса не видно.

Это ещё относительно нормальная тема, есть темы (удалённые) вида «мне дали на работе задание, напишите за меня код».

Dimez ★★★★★
()
Ответ на: комментарий от Silerus

Может там и начальство такое же.

Знаю одну контору, где админу на аутсорсе платят 5 т.р. в месяц.

Ну админ и работает на эту сумму, придёт раз в две недели, что-то покопошится и свалит.

Начальство недовольно, но платить больше денег всё равно не хотят. Продолжают жевать кактус.

wandrien ★★
()