Russian Qt Forum
Май 06, 2024, 02:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt _ кириллица и ASCII  (Прочитано 9596 раз)
Mish_ka
Гость
« : Март 19, 2011, 20:06 »

Когда кодил на PHP писал нечто вроде:
Код
PHP
$char=ord("П");
$answ=chr(207);
// в результате получаем $char=207 а $answ=П
 

на Qt делаю (точнее просто пробую):

Код
C++ (Qt)
QString tt;
int simvol;
QString answ;
tt="П";
simvol=tt.toInt();
answ=QString::number(simvol);
 

answ передаю в строчку на форме, иногда возвращает 0 иногда когда компилит EXE-шник, выдаёт в винду (7-ка) диалог, что программа некорректно установлена;

для работы с АСКИ пробую:

Код
C++ (Qt)
QString tt;
QByteArray cc;
QString answ;
tt="П";
cc=tt.toAscii();
answ=??????????
 

а вот как перевести QByteArray в QString для того чтобы вывести в строчку на форме (чтобы проверить что у нас получилось) не понимаю...

подскажите пожалуйста, кто как это делает?
Записан
Fat-Zer
Гость
« Ответ #1 : Март 19, 2011, 20:45 »

1) ASCII - подразумевает  латаницу и вообще сам стандарт определяет только 7-ми битную кодировку.
2) П - русская и всё очень сильно зависит от того в какой кодировке у вас исходники...
3) на почве этого кирилицу в исходниках лучше не использовать вообще.
Записан
Mish_ka
Гость
« Ответ #2 : Март 19, 2011, 21:12 »

Жгну конечно... но использую CP-1251
ну П у меня не в сырцах а читаю из файла

Записан
brankovic
Гость
« Ответ #3 : Март 19, 2011, 21:14 »

QString::fromUtf8 ( const char * utf8, int len = -1 )
QString::fromLocal8Bit ( const char * local8Bit, int len = -1 )

Например, если сорс в utf8, то:

QString s = QString::fromUtf8 ("П");

, если в cp1251 и это дефолтная кодировка винды, то fromLocal8Bit
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #4 : Март 19, 2011, 21:21 »

да здесь по-моему проблема в другом:
Цитировать
Код
C++ (Qt)
QString tt;
int simvol;
QString answ;
tt="П";
simvol=tt.toInt();
answ=QString::number(simvol);
 
Как вообще можно требовать такое преобразование:
Код
C++ (Qt)
tt="П";
simvol=tt.toInt();
 
Непонимающий
Может быть так:
Код
C++ (Qt)
tt = "П";
int simvol=(int)tt[0];
QString answ=QString::number(simvol);
 
« Последнее редактирование: Март 19, 2011, 21:23 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #5 : Март 19, 2011, 21:21 »

ваще-то намбер и то нит только для цифр-_-
Записан
Mish_ka
Гость
« Ответ #6 : Март 19, 2011, 21:32 »


int simvol=(int)tt[0];


матюгаетцо:
invalid cast from type 'QCharRef' to type 'int'   
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2094



Просмотр профиля
« Ответ #7 : Март 19, 2011, 21:39 »


int simvol=(int)tt[0];


матюгаетцо:
invalid cast from type 'QCharRef' to type 'int'   

Код
C++ (Qt)
int symbol = (int)str[0].toAscii();
 

Хотя гораздо логичнее делать так:
Код
C++ (Qt)
QChar symbol = str[0];
QString answ=QString::number(simbol);
 
« Последнее редактирование: Март 19, 2011, 21:42 от m_ax » Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.25 секунд. Запросов: 23.