Portál AbcLinuxu, 22. května 2024 17:32


Dotaz: qt mysql diakritika

15.1.2006 17:16 MaCrek
qt mysql diakritika
Přečteno: 321×
Odpovědět | Admin
Zdravim,

Robim jednoduchu aplikaciu v qt spolupracujucu s mysql databazou v ktorej su ulozene texty s diakritikou.

Vsetko bezi v pohode az na tu diakritiku. Prebehol som stranku trolltechu aj rozne diskusie, ale bez zdarneho vysledku. Teda nieco sa mi podarilo rozdchodit ale stale tam su znaky ktore qt nevie zobrazit. (bud nevypise ziaden znak, alebo namiesto neho da stvorcek).
Skusal som niekolko variant:

1:
QTextCodec *codec = QTextCodec::codecForName("ISO8859-2");
table->setText(i,3,codec->toUnicode(string));
Pri tomto kode, namiesto niektorych pismien dosadi otaznik, niektore nevypise vobec, a ine vypise v pohode (napr. dlhe a, i)

2:
table->setText(i,3,QString::fromLocal8Bit(string));
Tu zase otazniky nehadze, ale pismena jednoduxo nevypisuje.
Pri niektoryx fontox (napr. arial) zase hadze namiesto niektorych pismien stvorceky.

Dochadzaju mi napady aj trpezlivost. Vie mi niekto poradit co s tym ? Dakujem.

(stable debian, xdm 4.3.0, fluxbox, qt 3.3.4, gcc 3.3.5)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.1.2006 23:18 8an | skóre: 30
Rozbalit Rozbalit vše Re: qt mysql diakritika
Odpovědět | | Sbalit | Link | Blokovat | Admin
A jaké kódování používá ta databáze? Řádkový klient funguje OK?

fromlocal8bit v tomhle případě nepoužívej, pak ten program někde bude fungovat a někde ne. Má to význam snad jediné při převodu argumentů v argv[] na QString.
If you build an operating system that even an idiot can use, only idiots will use it.
16.1.2006 11:25 MaCrek
Rozbalit Rozbalit vše Re: qt mysql diakritika
Hmm... to ake je pouzite kodovanie som netusil... ale kedze je databaza plnena z wokienok tak som to tipoval na CP1250, overil som si to php skriptom, kde mozilla pri kodovani 8859-2 rozhadzala kodovanie a pri CP1250 to spravila OK.

Teraz by som asi potreboval doinstalovat fonty s CP1250, to bude asi tiez problem.

Btw. kedze to malo fungovat len na mojej masine tak som kludne pouzil aj fromlocal8bit.
16.1.2006 19:10 8an | skóre: 30
Rozbalit Rozbalit vše Re: qt mysql diakritika
No tak použij QTextCodec::codecForName("CP1250"), ne?

Ale možná bys sis měl napřed udělat pořádek v té databázi, aby měly tabulky nastavené takové kódování, jaká data v nich opravdu jsou. MySQL klient sám provádí konverze, je divné to řešit až v aplikaci.
If you build an operating system that even an idiot can use, only idiots will use it.
17.1.2006 08:18 MaCrek
Rozbalit Rozbalit vše Re: qt mysql diakritika
No to je jasne :) teraz pouzivam codec CP1250, ale stale to nie je ono. Nie som vlastnikom ani spravcom databazy, neplnim ju, len z nej citam. Je mozne teraz "za jazdi" zmenit kodovanie tabuliek ?
17.1.2006 14:47 8an | skóre: 30
Rozbalit Rozbalit vše Re: qt mysql diakritika
Někde jsem na to viděl návod...

Nedá se jednoduše přehodit kódování tabulky - to by se pokusilo překódovat výsledek by byl úplný chaos. Musíš textová data převést na BLOB (pak se žádná konverze neprovede), přehodit kódování na to, které odpovídá kódování skutečných dat, a pak zase BLOB převést na TEXT.

Nezapomeň to předtím zazálohovat :o)
If you build an operating system that even an idiot can use, only idiots will use it.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.