Russian Qt Forum

Qt => Общие вопросы => Тема начата: Mish_ka от Март 19, 2011, 20:06



Название: Qt _ кириллица и ASCII
Отправлено: 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 для того чтобы вывести в строчку на форме (чтобы проверить что у нас получилось) не понимаю...

подскажите пожалуйста, кто как это делает?


Название: Re: Qt _ кириллица и ASCII
Отправлено: Fat-Zer от Март 19, 2011, 20:45
1) ASCII - подразумевает  латаницу и вообще сам стандарт определяет только 7-ми битную кодировку.
2) П - русская и всё очень сильно зависит от того в какой кодировке у вас исходники...
3) на почве этого кирилицу в исходниках лучше не использовать вообще.


Название: Re: Qt _ кириллица и ASCII
Отправлено: Mish_ka от Март 19, 2011, 21:12
Жгну конечно... но использую CP-1251
ну П у меня не в сырцах а читаю из файла



Название: Re: Qt _ кириллица и ASCII
Отправлено: brankovic от Март 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


Название: Re: Qt _ кириллица и ASCII
Отправлено: m_ax от Март 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);
 


Название: Re: Qt _ кириллица и ASCII
Отправлено: Авварон от Март 19, 2011, 21:21
ваще-то намбер и то нит только для цифр-_-


Название: Re: Qt _ кириллица и ASCII
Отправлено: Mish_ka от Март 19, 2011, 21:32

int simvol=(int)tt[0];


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


Название: Re: Qt _ кириллица и ASCII
Отправлено: m_ax от Март 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);