Autor Téma: OZ 3 - Generator, UTF-8  (Přečteno 4913 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
OZ 3 - Generator, UTF-8
« kdy: 13-10-2012, 14:09:51 »
Čítam si čítam a tak mám nejaké otázky

1)
Generátor nie je na nič viazaný. Zistím si hodnotu ID a zapíšem ju. V celej DB mi tak stačí jeden generátor. Je to správne, alebo mám mať pre každú tabuľku vlastný generátor?. Napr. vzhľadom na viacnásobný prístup k DB.

2)
V celej DB mám všade nastavené UTF-8. Už viem, že to je nezmysel. Predsa nikde nie je určené, že chcem slovenčinu. Císař mi toho veľa neprezradil. Pre češtinu je (ISO8859_2) CS_CZ a čo pre slovenčinu?
Nebude mi pri CS_CZ chýbať "ô" a "ä"? Aj keď sa používajú minimálne.

Kde mám čo nastaviť a na akú hodnotu? Moje pokusy skončili s chybou transliterate. Bojujem s tým, že sa to nastavuje v

- DB
- tabuľkách - stĺpce
- TIBEDatebase

Kde si o tom prečítam viac?

Zaskočilo ma, že pri vkladaní DBEdit na formulár bola vždy nastavená dľžka reťazca na štvornásobok dĺžky definovanej v DB (varchar, UTF-8). Tuším o čo ide, ale mám v tom zmätok. Prepisoval som to na "pôvodnú" dĺžku a neviem či to je správne.

3)
DB v Access-e má veľkosť zhruba 0,3 MB, vo FB 3 MB. To je trocha veľký rozdiel. Je to v poriadku? Je tam minumum údajov.

4)
Som zvyknutý použíavť z Access-u typ Memo. Predpokladám, že v praxi sa použije málokedy. Podľa prečítaného by som mal správne použiť BLOB subtype text. Terajší stav Varchr(500) je nezmysel, lebo pri načítaní vždy rezervuje 500 znakov bez ohľadu na obsah.
Takže BLOB? Vyhľadávanie a radenie podľa Poznámky nehrozí.
« Poslední změna: 13-10-2012, 14:30:30 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1559
  • Karma: 37
    • Pepak.net
Re:OZ 3 - Generator, UTF-8
« Odpověď #1 kdy: 13-10-2012, 14:46:05 »
Generátor nie je na nič viazaný. Zistím si hodnotu ID a zapíšem ju. V celej DB mi tak stačí jeden generátor. Je to správne, alebo mám mať pre každú tabuľku vlastný generátor?. Napr. vzhľadom na viacnásobný prístup k DB.
Generátory jsou atomické a mimotransakční, tzn. i kdyby k nim přistupoval milion lidí současně, tak každý dostane jiné číslo.

Stačí jeden generátor na DB. Může jich být i víc, záleží na úvaze programátora. Já třeba používám jeden generátor na skoro celou DB (protože pak mimo jiné vidím, v jakém pořadí se zapisovalo do různých tabulek), ale na pár tabulek, které se velmi často obměňují (dočasné tabulky, masivně vytvářené a zase mazané logy, apod.) mám extra generátor, abych se nemusel bát, že v dohledné době přeteču přes 2 miliardy.

Citace
V celej DB mám všade nastavené UTF-8. Už viem, že to je nezmysel. Predsa nikde nie je určené, že chcem slovenčinu. Císař mi toho veľa neprezradil. Pre češtinu je (ISO8859_2) CS_CZ a čo pre slovenčinu?
Nebude mi pri CS_CZ chýbať "ô" a "ä"? Aj keď sa používajú minimálne.
U nových databází není důvod používat cokoliv jiného než UTF8. Akorát si musíš vybrat vhodnou collation, aby ti to dobře řadilo.

Citace
DB v Access-e má veľkosť zhruba 0,3 MB, vo FB 3 MB. To je trocha veľký rozdiel. Je to v poriadku? Je tam minumum údajov.
Ano, je to v pořádku.

Citace
Som zvyknutý použíavť z Access-u typ Memo. Predpokladám, že v praxi sa použije málokedy. Podľa prečítaného by som mal správne použiť BLOB subtype text. Terajší stav Varchr(500) je nezmysel, lebo pri načítaní vždy rezervuje 500 znakov bez ohľadu na obsah.
Takže BLOB? Vyhľadávanie a radenie podľa Poznámky nehrozí.
A vadí ti těch 500 znaků v něčem?
Ale ano, takže blob.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:OZ 3 - Generator, UTF-8
« Odpověď #2 kdy: 13-10-2012, 14:56:06 »
// Akorát si musíš vybrat vhodnou collation, aby ti to dobře řadilo.
Poižívam IBExpert a nemôžem určiť collation. Je tam natvrdo UTF8.

Ale ja by som najprv rád správne zobrazil obsah. Teraz nezobrazí správne ani jeden znak s diakritikou  ;)

//A vadí ti těch 500 znaků v něčem?
Ked som dobre rozumel, tak zbytočne plytvám miestom na disku. Tak v tom by mi to vadilo.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1559
  • Karma: 37
    • Pepak.net
Re:OZ 3 - Generator, UTF-8
« Odpověď #3 kdy: 13-10-2012, 17:23:44 »
// Akorát si musíš vybrat vhodnou collation, aby ti to dobře řadilo.
Poižívam IBExpert a nemôžem určiť collation. Je tam natvrdo UTF8.
UTF8 je znaková sada. Collation je způsob, jak se v rámci té znakové sady má řadit. Říct, že nemůžeš určit collation, protože je tam natvrdo UTF8, je jako tvrdit, že nemůžeš do auta čerpat naftu, protože tvoje auto má modrou barvu.

Citace
Ale ja by som najprv rád správne zobrazil obsah. Teraz nezobrazí správne ani jeden znak s diakritikou  ;)
To nesouvisí ani tak s kódováním v databázi jako s tím, jaké kódování máš nastavené v přístupových komponentách ve tvém programu. U parametrů databáze by tam mělo jít vybrat, v jakém kódování ti mají znaky přicházet.

Citace
//A vadí ti těch 500 znaků v něčem?
Ked som dobre rozumel, tak zbytočne plytvám miestom na disku. Tak v tom by mi to vadilo.
1) Rozuměl jsi špatně - varchar zabere na disku tolik místa, kolik znaků skutečně obsahuje.
2) Nebo míň, protože se to na disk ukládá komprimovaně.
3) I kdyby - těch 500 bajtů ti fakt může být úplně jedno, většinu prostoru ti stejně sežerou věci jako indexy a podobně.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:OZ 3 - Generator, UTF-8
« Odpověď #4 kdy: 13-10-2012, 17:44:47 »
Ale ja by som najprv rád správne zobrazil obsah. Teraz nezobrazí správne ani jeden znak s diakritikou  ;)
Nevim, nakolik je tohle aktualni dokumentace: http://ibexpert.net/ibe/index.php?n=Doc.InterBaseCharacterSetsAndCollationOrders
ale jestli to plati, tak  IBE nepodporuje pro UTF8 collation.

Zrejme si budes muset nejak vytvorit nejake UNICODE kolacovani: http://www.firebirdsql.org/refdocs/langrefupd21-collations.html#langrefupd21-collations-unicode.  Neco tady radil Činčura, kterej se tuším motal kolem vývoje driveru do .Netu https://groups.google.com/forum/?fromgroups=#!topic/firebird_cz/B2F9pCR3Wd4.

 Ale zkusenosti s UTF8 nemam, protoze jak jsem psal, z historickych duvodu pouzivame WIN1250 a zda se, ze o nic neprichazime.
« Poslední změna: 13-10-2012, 18:17:38 od pf1957 »

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1559
  • Karma: 37
    • Pepak.net
Re:OZ 3 - Generator, UTF-8
« Odpověď #5 kdy: 13-10-2012, 17:59:09 »
Taky z historických důvodů používám WIN1250.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:OZ 3 - Generator, UTF-8
« Odpověď #6 kdy: 14-10-2012, 09:39:46 »
//U parametrů databáze by tam mělo jít vybrat, v jakém kódování ti mají znaky přicházet.
Vybrať sa nedá, ale napísať áno. Už som to zvládol. UTF8 zoraďuje klasicky, čiže CH podľa C a slová začínajúce s diakritikou nakoniec.

//ale jestli to plati, tak  IBE nepodporuje pro UTF8 collation
Vo FB 2.5 to je celkom prerobené. Už neplatí ani to, čo platilo pre FB 1.x

Teraz sa už len skamarátiť collation.
Pri generátoroch odporúčajú použiť "CREATE SEQUENCE SeqTest;". Prakticky tam nie je rozdiel, ale ostatnému som nerozumel. Udem si to naštudovať so slovníkom.
Pri poznámkach ostanem na Varchar(500). Budem s tým mať menej roboty.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:OZ 3 - Generator, UTF-8
« Odpověď #7 kdy: 15-10-2012, 12:35:24 »
Na to nastavenie som už prišiel. Nech nastavím akúkoľvek stránku (UTF8, ISO8859_1, ISO8859_3, Win1250) + dostupné a vhodné Collation, tak mám vždy rovnako zlé radenie. CH podľa C a slová začínajúce diakritikou nakoniec.
Skúšal som to na Computed stĺpcom. Všade kde sa len dalo mám nastavené UTF8. To som nikde nemenil.
Neviem čo by som mal ešte urobiť.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Petr P.

  • Nováček
  • *
  • Příspěvků: 28
  • Karma: 1
    • Verze Delphi: Turbo Delphi 2006
Re:OZ 3 - Generator, UTF-8
« Odpověď #8 kdy: 15-10-2012, 14:27:09 »
České řazení CH a slov začínajících písemeny s háčky je v Collation PXW_CSY
« Poslední změna: 15-10-2012, 14:31:15 od Petr P. »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:OZ 3 - Generator, UTF-8
« Odpověď #9 kdy: 15-10-2012, 14:56:55 »
Ani pri kombinácii Win1250 + PXW_CSY nad stĺpcom mi to nefunguje.
Kopa ľudí tu používa UTF8 a len ja mám ten problém?  :'(
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 576
  • Karma: 25
Re:OZ 3 - Generator, UTF-8
« Odpověď #10 kdy: 15-10-2012, 17:47:39 »
Ani pri kombinácii Win1250 + PXW_CSY nad stĺpcom mi to nefunguje.
Kopa ľudí tu používa UTF8 a len ja mám ten problém?  :'(

zkoušel si to SQL pustit přímo v nějaké toole a přečíst si výsledek? Jestli se ti to třeba neřadí ještě někde v kódu :-)

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3343
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:OZ 3 - Generator, UTF-8
« Odpověď #11 kdy: 15-10-2012, 18:13:22 »
Ani pri kombinácii Win1250 + PXW_CSY nad stĺpcom mi to nefunguje.
Kopa ľudí tu používa UTF8 a len ja mám ten problém?  :'(
Tak je otazka, jestli kupa lidi pouziva UTF8 s ptakem ohnivakem  :)
My ho pouzivame skoro vsude, ale s ptakem ohnivakem pouzivame Win1250 a jiz zminene PXW_CSY.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:OZ 3 - Generator, UTF-8
« Odpověď #12 kdy: 16-10-2012, 08:39:31 »
Skúšam to priamo v IBExpert a s tabuľkou. Preto spomínam jednotlivé stĺpce.

// pf1957 - My ho pouzivame skoro vsude, ale s ptakem ohnivakem pouzivame Win1250 a jiz zminene PXW_CSY.
// Stanislav Hruška - Ani pri kombinácii Win1250 + PXW_CSY nad stĺpcom mi to nefunguje

Odstráni sa ten problém, ak to tak nastavím všade? Podľa návodu by malo byť v mojom prípade rozhodujúce nastavenie stĺpca.
Rozmýšľam, že to vlastne môžem igonorovať. Hromadné údaje zásadne zobrazujem pomocou VirtualTreeView. Ale už z princípu to chcem mať v poriadku.
« Poslední změna: 16-10-2012, 08:45:39 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:OZ 3 - Generator, UTF-8
« Odpověď #13 kdy: 16-10-2012, 15:23:44 »
Tak som pokusne hodil na formulár DBGrid a tam to funguje ako má. Ten IBExpert ma domotal.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.