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

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

Страниц: [1] 2 3 ... 5   Вниз
  Печать  
Автор Тема: Проблемы с кириллицей  (Прочитано 36905 раз)
thechicho
Гость
« : Октябрь 07, 2011, 09:13 »

как заставить работать с кириллицей?
Код
C++ (Qt)
QByteArray word = QByteArray("abcd").replace(word.at(0), QChar(word.at(0)).toUpper());
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Октябрь 07, 2011, 09:16 »

Не вижу кириллицы в примере. А вообще, читай мою подпись п2.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
thechicho
Гость
« Ответ #2 : Октябрь 07, 2011, 09:30 »

мне надо "слона" превратить в "Слона"!

// 2. Не используйте в исходниках символы кириллицы!!!
ватафак. чо за не любовь к родному языку. наоборот надо придумать способ, чтобы без головняков можно было с кириллицей работать. а еще лучше разработать собственный язык программирования на кириллице.

кароч.
как заставить работать код:
Код
C++ (Qt)
QByteArray word = QByteArray("парампампам").replace(word.at(0), QChar(word.at(0)).toUpper());
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #3 : Октябрь 07, 2011, 09:40 »

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"))
ватафак. чо за не любовь к родному языку. наоборот надо придумать способ, чтобы без головняков можно было с кириллицей работать. а еще лучше разработать собственный язык программирования на кириллице.
программирование является международным, значит и писать надо на международном языке. а языки, использующие кириллицу, существуют.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
thechicho
Гость
« Ответ #4 : Октябрь 07, 2011, 10:13 »

у меня все в UTF-8.

надо было просто QByteArray заменить на QString!!! Плачущий

Код
C++ (Qt)
QString word = "кириллицааа";
QChar firstUp = QChar(word.at(0)).toUpper();
word.remove(0, 1);
word.insert(0, firstUp);

// программирование является международным, значит и писать надо на международном языке
за несколько десятков лет америкосы весь мир раком поставили. ты не хочешь изменить ситуацию?

// а языки, использующие кириллицу, существуют
суслеГа видишь? не? а он есть!

надо разработать ну русском языке ЯП, равный с++ (или хотя б интерпретируемый, аля пых, для начала).
надо чота делать. самим делать, а не ждать, пока кто-то сделает. тогда все будет)
кто-то хочет поучаствовать в создании?
хотя б тупо для начала локализировать с++.
а потом уже гавно выкинуть, конфет добавить, и все будут писать на кириллице, и не надо будет мозг се делать, изучая хуинглишь Смеющийся
Записан
Dynamite
Гость
« Ответ #5 : Октябрь 09, 2011, 11:21 »

У себя в классе использую ассоциативный массив строк с сообщениями об ошибках на русском языке, как быть с кириллицей в данном случае?
Код:
// h
QMap<qint32, QString> ErrorMessagesDB;

// cpp
ErrorMessagesDB.insert(0,  "Операция произведена успешно.");
ErrorMessagesDB.insert(1,  "Не указан оригинальный файл.");
ErrorMessagesDB.insert(2,  "Не указано имя файла для замены.");
//...
Записан
andrew.k
Гость
« Ответ #6 : Октябрь 09, 2011, 11:55 »

Решение проблемы с кириллицей во всех случая одинаково и уже сто раз обсуждалось на форуме.

По поводу офтопа, что так сложно выучить пару десятков ключевых слов?
Не думаю, что если ключевые слова будут русскими станет проще.
Записан
andrew.k
Гость
« Ответ #7 : Октябрь 09, 2011, 12:00 »

Код
C++ (Qt)
QByteArray word = QByteArray("abcd").replace(word.at(0), QChar(word.at(0)).toUpper());
 
Русская версия:
Код
C++ (Qt)
КуМассивБайтов слово = КуМассивБайтов("abcd").заменить(слово.с(0), КуСимвол(слово.с(0)).кВерхнему());
 

Очень красиво, вперед, разрабатывай.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #8 : Октябрь 09, 2011, 12:23 »

1C кой попахивает   Смеющийся

Код:
QTcpSocket *socket = new QTcpSocket(this);

Код:
КуТиСиПиСокет Звездочка сокет = новый КуТиСиПиСокет(тута);

 Смеющийся
Записан
Dynamite
Гость
« Ответ #9 : Октябрь 09, 2011, 12:33 »

Решение проблемы с кириллицей во всех случая одинаково и уже сто раз обсуждалось на форуме.
где, если не секрет?  Строит глазки
Не нашел такого..
Записан
andrew.k
Гость
« Ответ #10 : Октябрь 09, 2011, 13:23 »

впиши в поиске setCodecForCString сначала в ассистанте, потом в форуме.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #11 : Октябрь 09, 2011, 13:57 »

А еще лучше не использовать кириллицу в коде, а пользоваться локализацией.
Записан
Dynamite
Гость
« Ответ #12 : Октябрь 09, 2011, 16:44 »

А еще лучше не использовать кириллицу в коде, а пользоваться локализацией.
Спасибо, буду пробовать... Нашел в доках макрос Q_DECLARE_TR_FUNCTIONS для возможности использования функции tr() в пользовательском классе.
Локализованные строки где хранятся?
Записан
thechicho
Гость
« Ответ #13 : Октябрь 09, 2011, 16:45 »

// КуМассивБайтов слово = КуМассивБайтов("abcd").заменить(слово.с(0), КуСимвол(слово.с(0)).кВерхнему());
ну это твой вариант) и даже этот вариант интуитивней, а значит понятней, для русскоговорящего. т.е. порог вхождения (по пониманию) уменьшится. проще будет кодить. да на родном языке мне лично было бы приятней писать, чем на чужом.

// КуТиСиПиСокет Звездочка сокет = новый КуТиСиПиСокет(тута);
 Смеющийся тя бы точно не взяли на локализацию синтаксиса)))
тута Веселый
Записан
thechicho
Гость
« Ответ #14 : Октябрь 09, 2011, 16:51 »

Код
C++ (Qt)
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
 
// Так из utf-8 конвертируем в Windows-1251
QString old;
QByteArray new = QTextCodec::codecForName("Windows-1251")->fromUnicode(old);

ваще по умолчанию QString в UTF-16 вроде. я хз, сам не до конца допер чо так к чему. многобайтовые, однобайтовые... к..ня кароче)

тупо исходники в UTF-8 в ноутпад++ конвертишь, явно задаешь UTF-8 (код выше) и все работает.
Записан
Страниц: [1] 2 3 ... 5   Вверх
  Печать  
 
Перейти в:  


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