Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 66
1

Как перегнать текст в UTF-8?

13.04.2013, 23:03. Показов 3736. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу стеганаграфию в BMP, ну то есть заменяю последний бит пикселя на бит символа. Так вот, если из QPlainTextEditor получаю английский текст(и символы), то всё нормально, а вот кирилица сбивает всё, что только можно... Я использую по 1 байту на один символ.
Как перевести текст при получении в UTF-8, ну чтобы все символы занимали отведённые им 2 бита(то большинство известных мне символов дальше и не заходит)?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2013, 23:03
Ответы с готовыми решениями:

Как перегнать из KOI8-r в UTF-16?
Вопрос следующего рода - я устававливаю подключение при помощи url.openStream(), получаю HTML...

Модифицированный UTF-8, как расшифровать текст?
Есть одна программа на Java, которая сохраняет текст в файл в кодировке, как я понял, Modified...

Как перевести текст с умляутами из экселя в utf-8
Здравствуйте, помогите мне пожалуйста. Есть текст на двух языках - английском и немецком в...

Как сохранить текст из memo в кодировке UTF-8?
Приветствую! Нужна Ваша помощь. Мне надо сохранить текст из memo1 в кодировке UTF-8. Процедура...

7
35 / 35 / 1
Регистрация: 02.03.2012
Сообщений: 117
14.04.2013, 00:49 2
Цитата Сообщение от xKRABx Посмотреть сообщение
Пишу стеганаграфию в BMP, ну то есть заменяю последний бит пикселя на бит символа. Так вот, если из QPlainTextEditor получаю английский текст(и символы), то всё нормально, а вот кирилица сбивает всё, что только можно... Я использую по 1 байту на один символ.
Как перевести текст при получении в UTF-8, ну чтобы все символы занимали отведённые им 2 бита(то большинство известных мне символов дальше и не заходит)?
А у QString по-моему есть какой-то такой метод toUTF8 или что-то в этом роде...
1
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.04.2013, 02:02 3
Цитата Сообщение от xKRABx Посмотреть сообщение
ну чтобы все символы занимали отведённые им 2 бита
???

Вообще в QByteArray перевоить надо, и с ним работать...
1
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 66
14.04.2013, 10:07  [ТС] 4
Цитата Сообщение от Avazart Посмотреть сообщение
???

Вообще в QByteArray перевоить надо, и с ним работать...
В QByteArray каждый элемент - 1 бит или 1 байт?

Добавлено через 31 секунду
Цитата Сообщение от kniferko Посмотреть сообщение
А у QString по-моему есть какой-то такой метод toUTF8 или что-то в этом роде...
Есть, но он в QByteArray переводит...
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
14.04.2013, 11:30 5
Цитата Сообщение от xKRABx Посмотреть сообщение
В QByteArray каждый элемент - 1 бит или 1 байт?
Байт.
1
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
14.04.2013, 12:31 6
Цитата Сообщение от xKRABx Посмотреть сообщение
ну чтобы все символы занимали отведённые им 2 бита
В QString и так все символы занимают 2 байта.

Добавлено через 54 секунды
Цитата Сообщение от xKRABx Посмотреть сообщение
а вот кирилица сбивает всё, что только можно...
Это надо смотреть как ты работаешь с битами.
1
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 66
14.04.2013, 13:03  [ТС] 7
В ходе тестов я выявил, что обрезается только часть текста...
При этом после того, как я загоняю текст в массив и хочу вывести коды символов, то получается такая штука:
Код
q
113
0
Код
ы
-47
-117
Код
qы
113
-47
-117
Код
ыq
-47
-117
113
Код
Test.
84
101
115
116
46
0
Код
Тест.
-48
-94
-48
-75
-47
-127
То есть если в строке есть кирилица, то пропадает нулевой сивол и кирилица имеет отрицательные коды... Я ни чего не понимаю(
Вот кусок кода:
C++ (Qt)
1
2
3
4
5
6
7
8
char *text = new char[ui->text->toPlainText().length()+1];
    std::string temp = ui->text->toPlainText().toStdString(); //Загоняем текст в string
    int length = ui->text->toPlainText().length()+1;
    strcpy(text,temp.c_str()); //И копируем в массив символов
    for(int i=0;i<length;i++)
    {
        ui->text->insertPlainText('\n'+QString::number(text[i],10));
    }
Помогите, пожалуйста)

Добавлено через 8 минут
Вроде всё работает... Похое, что нужно было с длинами массивов пошаманить)
0
1443 / 1326 / 131
Регистрация: 20.03.2009
Сообщений: 4,689
Записей в блоге: 11
14.04.2013, 15:14 8
Цитата Сообщение от xKRABx Посмотреть сообщение
то пропадает нулевой сивол и кирилица имеет отрицательные коды...
Читай про ASCII, или тут по char и unsigned char.
1
14.04.2013, 15:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2013, 15:14
Помогаю со студенческими работами здесь

UTF-8 без BOM. Как вернуть русский текст?
Всем добрый день. преобразовал страницу в utf-8 без BOM. И в php дизайнере в настройках указал...

Кодировка utf-8, как декодировать обратно в русский текст?
Проблема такая - с бека на запрос ext.direct приходит ответ, если он без exeptions, то все ок грид...

XmlSerializer.Serialize() как поменять кодировку с UTF-16 на UTF-8
Задача серилизовать объект в string, но с кодировкой UTF-8. подзадача - как представить строку как...

getBytes('UTF-16') даёт UTF-16LE или UTF-16BE?
Добрый день! Делаю J2ME-клиента к некому серверу, исходников которого у меня нет, но есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru