QString ve Türkçe Karakter Problemi

794 views
Skip to first unread message

Murat ALKAN

unread,
Aug 15, 2008, 12:08:17 PM8/15/08
to Qt Türkiye
Merhabalar,

Qt ile win32 platformunda bir program geliştiriyorum. Ancak tüm
denemelerime rağmen QString değişkenlerine Türkçe karakter içeren
değişken veriler ekleyemiyorum.

Designer'ın kodunda sorun yok:
plainTextEdit->setPlainText(QApplication::translate("Dialog", "PETK
\304\260M PETROK\304\260MYA", 0, QApplication::UnicodeUTF8));

Tırnaklı kısıma Türkçe karakterleri direk girdiğimde ya da aşağıdaki
kodu kullandığımda;
plainTextEdit->setPlainText(QString::fromUtf8("PETK\304\260M PETROK
\304\260MYA"));

Türkçe karakterleri çıkartamıyorum. Bunun çözümünü bilen var mı?

İyi günler...

Ömer F. USTA

unread,
Aug 15, 2008, 6:34:09 PM8/15/08
to qttu...@googlegroups.com

Nesimi ACARCA

unread,
Aug 16, 2008, 2:58:32 AM8/16/08
to qttu...@googlegroups.com
main.cpp dosyasını şu şekilde düzeltmeniz yeterli. Bu eklemeler ile uygulamanın tüm kısmında rahatlıkla tr karakter okuyup, yazabilirsiniz.

#include <QApplication>
#include <QLabel>
#include <qtextcodec.h>
//#include <qcstring.h>qt3 de gerek olabilir.

int main( int argc, char *argv[] ){
//Uygulamadaki Translation işlemleri için örnegin labelin caption özelliğine tr yazıp okumak için.
QTextCodec::setCodecForTr( QTextCodec::codecForName("utf8") );

//Uygulamadaki CStrings için yani db güncelleme işlemlerinde tr yazılıp okunabiliyor.
QTextCodec::setCodecForCStrings ( QTextCodec::codecForName("utf8") );

QApplication app( argc, argv );
QLabel *label1 = new QLabel("Merhaba Dünya");
label1->show();
return app.exec();
}

15 Ağustos 2008 Cuma 19:08 tarihinde Murat ALKAN <ocea...@gmail.com> yazdı:



--
Nesimi ACARCA
www.nesimia.com

Murat ALKAN

unread,
Aug 16, 2008, 7:48:39 AM8/16/08
to Qt Türkiye
Öncelikle cevaplarınız için teşekkür ederim.

Platform farklılığından dolayı olsa gerek, kodlar Türkçe karakterleri
gösteremedi. Linux'un çok daha iyi bir locale sistemi var.
Bunu yerine aşağıdaki kod işimi gördü.

QTextCodec::setCodecForTr( QTextCodec::codecForName("ISO-8859-9") );
QTextCodec::setCodecForCStrings
( QTextCodec::codecForName("ISO-8859-9") );

On 16 Ağustos, 09:58, "Nesimi ACARCA" <nesimia....@gmail.com> wrote:
> main.cpp dosyasını şu şekilde düzeltmeniz yeterli. Bu eklemeler ile
> uygulamanın tüm kısmında rahatlıkla tr karakter okuyup, yazabilirsiniz.
>
> #include <QApplication>
> #include <QLabel>
> #include <qtextcodec.h>
> //#include <qcstring.h>qt3 de gerek olabilir.
>
> int main( int argc, char *argv[] ){
> //Uygulamadaki Translation işlemleri için örnegin labelin caption özelliğine
> tr yazıp okumak için.
> QTextCodec::setCodecForTr( QTextCodec::codecForName("utf8") );
>
> //Uygulamadaki CStrings için yani db güncelleme işlemlerinde tr yazılıp
> okunabiliyor.
> QTextCodec::setCodecForCStrings ( QTextCodec::codecForName("utf8") );
>
> QApplication app( argc, argv );
> QLabel *label1 = new QLabel("Merhaba Dünya");
> label1->show();
> return app.exec();
>
> }
>
> 15 Ağustos 2008 Cuma 19:08 tarihinde Murat ALKAN <ocean...@gmail.com> yazdı:

Hakan Aktan

unread,
May 28, 2019, 3:31:47 AM5/28/19
to Qt Türkiye
Üstünden epey zaman geçmiş ama ben aynı sorunu yaşıyorum.
Metinler QDebug() yapınca düzgün görünüyor ancak QLabel ' a yazdırmaya kalkınca TR karakterler bozuk çıkıyor.
Aşağıdaki kodları Main.cpp ye yazdım sorun çözülmedi.
Fikri olan var mı?

A.A. Sezen

unread,
May 30, 2019, 6:51:38 AM5/30/19
to Qt Türkiye
Selam,
Örnek kod ile sistem bilgilerini paylaşabilir misiniz?

28 Mayıs 2019 Salı 10:31:47 UTC+3 tarihinde Hakan Aktan yazdı:

Anıl Özbek

unread,
May 30, 2019, 12:56:57 PM5/30/19
to qttu...@googlegroups.com
Sorununuzu çözmek için doğrudan kullanabilir misiniz bilmiyorum ama bir süre önce yaşadığım sorunu ve çözümünü söyleyeyim.

Bir sözlükten okuduğum tüm kelimeleri küçültüp kullanmam gerekiyordu ve Türkçe'deki meşhur ı harfi sorunuyla karşılaştım. Çözmek için QLocale'i şu şekilde kullandım:

void MainWindow::on_pushButton_clicked()
{
    QLocale turkish(QLocale::Turkish, QLocale::Turkey);

    //ui->label->setText(ui->lineEdit->text().toLower());
    ui->label->setText(turkish.toLower(ui->lineEdit->text()));
}

Hakan Aktan

unread,
May 31, 2019, 2:51:42 AM5/31/19
to qttu...@googlegroups.com
Merhabalar, 

Sistem Ubuntu üstünde Qt 5.5 ama deploy ederken Qt 4.8.3 gibi çalıştırıyoruz.
Deploy ettiğim cihaz linux embedded. Yukarıdaki kodları da denedim olmadı.
Label 'ın Locale ayarlarını Türkçe yaptım olmadı.
QDebug() ettiğimde düzgün yazıyor ama sadece Label ' da düzgün görünmüyor.
Ayrıca Qt de Tools->Opstions->Text Editor->Behavior->FileEncodings-> Default Encoding ayarını ISO-8859-9 yaptım yine olmadı.
Fikirlerinize açığım ...

iyi çalışmalar.

--
--
Qt Türkiye E-Posta Listesi
Yazılanlardan sadece yazan sorumludur...
Mesaj göndermek için qttu...@googlegroups.com
Listeden çıkmak için qtturkiye-...@googlegroups.com
Liste hakkında daha fazla bilgi için
http://groups.google.com/group/qtturkiye
Qt Türkiye: http://qt.comu.edu.tr
---
Bu iletiyi Google Grupları'ndaki "Qt Türkiye" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için qtturkiye+...@googlegroups.com adresine e-posta gönderin.
Bu tartışmayı web'de görüntülemek için https://groups.google.com/d/msgid/qtturkiye/CALq2gPoNd8Q5%2Baoin8qaUQ1YwZ74oynX4UKHw5AsLEw%3DQFrgDA%40mail.gmail.com adresini ziyaret edin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.


--
-------------------
Hakan Aktan 
-------------------

Dr. Mucibirahman İLBUĞA

unread,
May 31, 2019, 4:47:57 AM5/31/19
to qttu...@googlegroups.com

Merhabalar,

Ben öncelikle "ı" ve "İ" harflerini replace ederek olması gerektiği gibi değiştiriyor ondan sonra UPPER fonksiyonuna sokuyorum. Siz de bu şekilde yapabilirsiniz sanki?...

QString baglanti::buyukHarf(QString gelenKatar)

{
    if(gelenKatar!="")
    {
        gelenKatar.replace("i","İ");
        return gelenKatar.toUpper();
    } else return "";

    
}




Kolay gelsin,
Mucip:)
31.05.2019 09:51 tarihinde Hakan Aktan yazdı:

A.A. Sezen

unread,
May 31, 2019, 6:18:13 AM5/31/19
to Qt Türkiye
Selam,
Türkçe karakter sorununun yaşandığı durumu içeren örnek senaryoya ait kod yok mu?
Hangi durumda yaşanıyor.
Bende yaşamak istiyorum :)
Aykut
31 Mayıs 2019 Cuma 11:47:57 UTC+3 tarihinde Dr. Mucibirahman İLBUĞA yazdı:
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için qttu...@googlegroups.com adresine e-posta gönderin.

Bu tartışmayı web'de görüntülemek için https://groups.google.com/d/msgid/qtturkiye/CALq2gPoNd8Q5%2Baoin8qaUQ1YwZ74oynX4UKHw5AsLEw%3DQFrgDA%40mail.gmail.com adresini ziyaret edin.
Daha fazla seçenek için https://groups.google.com/d/optout adresini ziyaret edin.


--
-------------------
Hakan Aktan 
-------------------
--
--
Qt Türkiye E-Posta Listesi
Yazılanlardan sadece yazan sorumludur...
Mesaj göndermek için qttu...@googlegroups.com
Listeden çıkmak için qtturkiye-...@googlegroups.com
Liste hakkında daha fazla bilgi için
http://groups.google.com/group/qtturkiye
Qt Türkiye: http://qt.comu.edu.tr
---
Bu iletiyi Google Grupları'ndaki "Qt Türkiye" grubuna abone olduğunuz için aldınız.
Bu grubun aboneliğinden çıkmak ve bu gruptan artık e-posta almamak için qttu...@googlegroups.com adresine e-posta gönderin.

Ömer Fadıl USTA

unread,
May 31, 2019, 9:21:41 AM5/31/19
to Qt Türkiye
deploy ettiginiz (hedef ) sistemde freetype ve fontconfig paketleri yuklu mu ?
Keza derleme yaptiginiz host sisteminizde freetype ve fontconfig paketleri yuklu ve
qt nizin freetype destegiyle derlendigine ( elle derledi iseniz derleme oncesinde
bu paketlerin olduguna ) emin olun hocam.
Ve sizden birkac seyi paylasmanizi rica ediyorum :
Mevcut ve hedef sistemin tam paket surum numaralari ( fontconfig freetype qt .. )
Derleme ve/veya calistirma anindaki output loglari
sadece 1 label ve icinde bir turkce yazi olacak sekilde duzenleyip ( basittinden bir helloworld gibi) bunun kodunu paylasmanizi
Yukaridakinin output loglarini ve ekran goruntusunu
Son saydigim 3 secenegin host sistem ve hedef sistemdeki sonuclaini yani hem gelistirme yaptiginiz sistemde hemde asil hedefteki

Tesekkurler



Ömer Fadıl Usta
PGP key : 0xfd11561976b1690b
about.me/omerusta


Hakan Aktan <hakan...@gmail.com>, 31 May 2019 Cum, 09:51 tarihinde şunu yazdı:

Hakan Aktan

unread,
Jun 10, 2019, 9:03:12 AM6/10/19
to Qt Türkiye
Merhabalar,

Sorunu çözdüm sonunda. Aynı sorunu yaşayan olursa diye çözümleri yazıyorum. Bir sürü şey denedim.
Öncelikle sorun TCP den gelen byte array 'in içindeki string Türkçe karakterlerin bozuk çıkmasıydı.
Gönderen C# kodu şudur:
 byte[] msg = System.Text.Encoding.UTF8.GetBytes(data.ToCharArray());

Alıcı kodu:
 QByteArray receivedData = socket->readAll();
QString qmessage = QTextCodec::codecForName("UTF-8")->toUnicode(receivedData);

Label a veriyi bastığım kod:
 QLocale turkish(QLocale::Turkish, QLocale::Turkey);
    ui->lblProduct->setText(turkish.toUpper(product));

herkese teşekkürler.
Reply all
Reply to author
Forward
0 new messages