LINUX.ORG.RU

PyQT, как узнать кодировку текста

 , , ,


0

1

Есть значение QVariant, оно содержит некторый текст. Надо узнать кодировку.

Вообще, какой труЪ-способ сравнения строк с разной кодировкой? Имеется ввиду разная кодировка в редакторе кода и внутри приложения.

Deleted

В Qt нет. Есть в пихтоне - chardet. ТруЪ-способ сравнения строк с разной кодировкой - перевести обе в utf-8 (ну или в QString сразу).

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

Ни как не могу сравнить две строки... Черт, не думал что я когда нибудь вообще столкнусь с такой проблемой. Файл-исходник в utf-8. Я пишу:

print '@1', forceStr(self.modelMy.data(self.modelMy.currentIndex())) == 'Строка'
Получаю False. Хотя знаю, что forceStr(self.modelMy.data(self.modelMy.currentIndex())) содержит текст 'Строка'. Абсолютно точно.

forceStr - делает это:

if isinstance(value, QVariant):
        val = value.toString()

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

man QTextCodec, в частности, если не ошибаюсь:

QTextCodec::setCodecForCStrings
QTextCodec::setCodecForTr
QTextCodec::setCodecForLocale

solovey ★★
()
Ответ на: комментарий от Deleted
>>> u'Строка' == 'Строка'
__main__:1: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
False
anonymous
()
Ответ на: комментарий от Deleted

Попробуй сравнить с QString('строка'), раз уж используешь QString'и в проекте.

Попробуй вывести посимвольно результат вызова forceStr(), там могут быть лишние символы.

E ★★★
()

Может, ты осилишь уже стек оверфлоу? Засрал весь трекер своими банальными однострочными вопросами.

anonymous
()
Ответ на: комментарий от E

Попробуй сравнить с QString('строка'), раз уж используешь QString'и в проекте.

Не работает. Я ни хрена не пойму. Код проекта - UTF-8. Само собой, строка в исходнике - тоже UTF-8. Строка в БД с которой я сравниваю строку из исходника - тоже UTF-8. Ну в чем тут блин проблема?

Попытался вывести строку из БД в файл, но питон не осилил. Он говорит, что не может привести ее к какой то там кодировке. Збс язык, че сказать.

Deleted
()
Ответ на: комментарий от EXL

val = value.toString().toUtf8()

Попробовал, не пашет.

Deleted
()

Разобрался таки. Короче, строка в БД путем каких то оккультных действий приводится в юникод. Я сравнивал ее со сотрокой в utf-8. Перевел строку в исходнике в юникод - заработало.

Deleted
()

Ты же сам в другом треде кукарекал «Qt не нужен!», лицемерный даун.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.