Преобразование строки, содержащей \u символы в читаемую строку |
Здравствуйте, гость ( Вход | Регистрация )
Преобразование строки, содержащей \u символы в читаемую строку |
MishaUA |
1.11.2015, 15:07
Сообщение
#1
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
Здравствуйте!
Моя прога имеет дополнительный встроенный отладчик, основаный на QDebug+QBuffer. Когда отладчик что-то получает, вызывается слот и результат можно считать через QBuffer->buffer(), а конвертация в текст происходит так: QTextCodec::codecForLocale()->toUnicode(QBuffer->buffer()). С латиницей проблем нет, а вот с кирилицей, есть. С строку вся кирилица записывается в юникоде с приставкой \u. К примеру, строка "Start Старт" выглядит так: "Start \u0421\u0442\u0430\u0440\u0442". Каким образом можно конвентировать эту строку в обычный вид, чтобы вместо 16-ричного значения были читаемые символы кроме как выковыривать каждый \u****, конвентировать его и записывать обратно? Спасибо! |
|
|
Litkevich Yuriy |
1.11.2015, 19:36
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Обычно QString нормально глотает такую строку, т.е.
получим корректную надпись.По моему вот это QTextCodec::codecForLocale() и есть проблема. |
|
|
MishaUA |
1.11.2015, 21:35
Сообщение
#3
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
Впринципе, Вы правы, если сделать конкретно так, то работает.
Возьмем более практичный пример. Допустим, есть объект QDebug, который подключен к QBuffer.
Есть файл переводов и tr("Start") переведен на русский. К сигналу readyRead() QBuffer'a подключен слот и в нем:
В результате в QPlainTextEdit добавляется "\u0421\u0442\u0430\u0440\u0442" (прям вот так, с лапками). |
|
|
MishaUA |
1.11.2015, 22:41
Сообщение
#4
|
Участник Группа: Участник Сообщений: 185 Регистрация: 28.4.2013 Пользователь №: 3810 Спасибо сказали: 13 раз(а) Репутация: 0 |
Сделал так:
|
|
|
Текстовая версия | Сейчас: 25.4.2024, 22:10 |