11.07.2015 Views

107_Plivelic Razvoj aplikacija na utf8.pdf - HrOUG

107_Plivelic Razvoj aplikacija na utf8.pdf - HrOUG

107_Plivelic Razvoj aplikacija na utf8.pdf - HrOUG

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

O čemu će biti riječi...2Unicode i UTF8podešenja bazepodešenja klijentaiskustva u radu sa UTF8 bazom i Oracle Forms,Reports, SQL Loader-om, exp/imp...<strong>na</strong>glasak <strong>na</strong> klijentsko-serverskom modu rada30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Pojmovi...3character set• skup z<strong>na</strong>kova koji uključuje mapiranje između tihz<strong>na</strong>kova i njima pripadnih numeričkih vrijednosti• primjeri: ASCII, Unicode...character set encoding• kako numeričke vrijednosti pohraniti u raču<strong>na</strong>lu• primjer: UTF-8code page (kod<strong>na</strong> stranica)• tablica za mapiranje z<strong>na</strong>kova u numeričke vrijednosti• primjeri: ANSI 1250, OEM 85230.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


...i još malo pojmova4font• skup grafema kojim se z<strong>na</strong>kovi pretvaraju u otisak <strong>na</strong>ekranu/papiru• primjer: Arial – implementira ANSI 1250, 1251, 1252,1253, 1254, 1257• ne mora postojati grafička prezentacija za svaki z<strong>na</strong>k30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Malo povijesti...5ASCII• 7 bita (128 z<strong>na</strong>kova)• slova samo engleske abecede8-bitne kodne stranice (character set-ovi)• ANSI 1250• OEM 852Unicode• trenutno oko 100-ak tisuća z<strong>na</strong>kova, 30-ak alfabeta30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Unicode6svaki z<strong>na</strong>k prikazuje se tzv. code point-om• primjer: code point za A je U+0041UTF (Unicode transformation format)• UTF-8• UTF-16- 2 bajta (ili 4)- UTF-16LE i UTF-16BE- UCS-2 – samo 2 bajta• UTF-32/UCS-4- 4 bajta30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


UTF-87varijabil<strong>na</strong> dulji<strong>na</strong> prikaza 1 z<strong>na</strong>ka (od 1 do 4bajta)• 1 bajt – ASCII z<strong>na</strong>kovi• 2 bajta – npr. hrvatski dijakritički z<strong>na</strong>kovi• 3 bajta – npr. ćirilični z<strong>na</strong>kovi• 4 bajta – linear B, feničko pismo itd.svi ASCII tekstovi/datoteke su ujedno i UTF-8tekstovi/datoteke30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


BOM8kako oz<strong>na</strong>čiti da je neka datoteka u UTF-8formatu?byte order mark (U+FEFF) <strong>na</strong> početku datotekeUTF-16• BE (FE FF) ili LE (FF FE)UTF-8• ne oz<strong>na</strong>čava poredak bajtova• EF BB BF• editori koji ne prepoz<strong>na</strong>ju UTF-8 prikazuje BOM kaoz<strong>na</strong>kove ð»¿30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Oracle i Unicode9Oracle podržava UTF-8 od verzije 8i• character set-ovi UTF8(od 8i) i AL32UTF8 (od 9i)AL16UTF16• UTF-16 (od 9i)Character set baze Verzija bazeUTF88.0-10gAL32UTF8 9.0-10gUnicode standard2.1 (8.0-8.1.6)3.0 (8.1.7-10g)3.0 (9.0)3.1 (9.2)3.2 (10.1)4.01(10.2)30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Character set baze10određuje koji sve z<strong>na</strong>kovi mogu biti spremljeni ubazuparametar baze NLS_CHARACTERSETjednobajtni: US7ASCII, EE8MSWIN1250(hrvatski z<strong>na</strong>kovi), CL8MSWIN1251 (ćirilica),WE8MSWIN1252, EE8ISO8859P2 itd.višebajtni: UTF8 (do maks. 3 bajta po z<strong>na</strong>ku),AL32UTF8 (do 4 bajta)nema veze sa kodnom stranicom (npr. ACP uwindows-ima) OS-a koji je <strong>na</strong> serveru30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Promje<strong>na</strong> character set-a11stari character set treba biti podskup novog –i<strong>na</strong>če može doći do gubitka podataka? - replacement charactercsscan + alter database character setdulji<strong>na</strong> ime<strong>na</strong> objekata (30) i usera (8) je ubajtima30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


NLS_NCHAR_CHARACTERSET12dodatni character set bazeza varijable i kolone tipa NCHAR, NVARCHAR2 iNCLOBForms 6i/9i ne podržavaju ove tipove30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


NLS_LENGTH_SEMANTICS13što z<strong>na</strong>či npr. varchar2(10), odnosi li se 10 <strong>na</strong>z<strong>na</strong>kove ili <strong>na</strong> bajte?od 9i moguće je definirati kolone kao:• kol1 varchar2(10 byte)• kol2 varchar2(10 char)ako nije eksplicitno <strong>na</strong>vedeno, gleda sevrijednost NLS_LENGTH_SEMANTICS<strong>na</strong> nivou instance baze ili <strong>na</strong> nivou sesijedefault-<strong>na</strong> vrijednost je byteograničenje <strong>na</strong> 4000 bajta30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


NLS_LANG (2)15treba odgovarati character set-u/kodnoj stranicioperacijskog sustava koji se vrti <strong>na</strong> klijentuu windows-ima to je ACP (ANSI code page)• za "<strong>na</strong>še" windows-e ACP je 1250 pa klijentskicharacter set treba biti EE8MSWIN1250• za DOS-OEM verziju sqlplus-a treba staviti EE8PC852NLS_LANG treba podesiti prije pokretanjaklijentske aplikacije koja ga koristiklijentski character set ne može se promijenitisa alter session30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


NLS_LANG (3)16ako je klijentski character set jed<strong>na</strong>k baznom,ne dolazi do konverzijekonverzija se obavlja <strong>na</strong> klijentu (osim kadklijent ne poz<strong>na</strong>je character set baze)ako u klijentskom character set-u ne postojiz<strong>na</strong>k koji treba prikazati, prikazuje se z<strong>na</strong>k ?• npr. treba prikazati ćirilični z<strong>na</strong>k, a klijentski characterset je EE8MSWIN1250u nekim <strong>aplikacija</strong>ma (npr. TOAD) potrebno jepodesiti i script za font30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Forms/Reports i UTF8 (1)17postavljanje klijentskog character set-a <strong>na</strong> UTF8• ako u formi/meniju/izvještaju postoje dijakritičkiz<strong>na</strong>kovi – može doći do rušenja forme/izvještajarad sa UTF8 bazom• punjenje item-a širine 1 <strong>na</strong> formi z<strong>na</strong>kom kojizahtijeva više od jednog bajta pozivanjem proceduresa out parametrom- rješenje: ne koristiti proceduru sa out parametrom• out parametar u baznoj proceduri tipa record – javljase greška 'sig<strong>na</strong>ture of package has been changed'- rješenje: jed<strong>na</strong> verzija za UTF8 bazu, druga zajednobajtne baze30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Forms/Reports i UTF8 (2)18Forms 9i• property item-a Data Length Semanticsrazvoj <strong>aplikacija</strong> sa različitim character setovima/kodnimstranicama <strong>na</strong> istom raču<strong>na</strong>lu• promje<strong>na</strong> kodne stranice zahtijeva restart raču<strong>na</strong>la• preporuka: dodatno raču<strong>na</strong>lo (ili virtual machine)30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Primjer forme <strong>na</strong> ćirilici1930.09.2007.


SQL Loader i UTF-820kakav se character set/encoding koristi udatoteci koja se učitava?koriste se CTL parametri CHARACTERSET iBYTEORDER (ako nisu definirani, onda je bitanklijentski character set)klijent verzije 9 z<strong>na</strong> čitati datoteke u UTF-16formatu, kao i prepoz<strong>na</strong>vati BOM (klijent verzije8 to ne z<strong>na</strong>)30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Exp/imp i UTF-821cilj je smanjiti broj konverzija iz jednogcharacter set-a u drugiexport i import je <strong>na</strong>jbolje raditi sa klijentskimcharacter set-om postavljenim <strong>na</strong> istu vrijednostkao što je i character set izvorišne bazenije bit<strong>na</strong> kod<strong>na</strong> stranica OS-a raču<strong>na</strong>la <strong>na</strong>kojem se radi export/importklijenti verzije 8 i stariji kod exporta/importa nerekonstruiraju ispravno strukturu baze• kolone tipa varchar2 proširuju s faktorom 330.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


NLS u web formama (apleti)22klijent – iAS - bazaklijent: npr.Windows(ANSI codepoint)+browser+JInitiator(ANSI->UTF-16)+Forms aplet(UTF-16->UTF-8)iAS(UTF-8->character set definiran uNLS_LANG-u Forms-a)baza(eventual<strong>na</strong> konverzija u OCI sloju)preporuka: staviti NLS_LANG za Forms-ejed<strong>na</strong>k character set-u baze30.09.2007.


Zaključak23odabir character set-a ovisi o skupu z<strong>na</strong>kovakoje treba podržatiklijenti verzije 8i i stariji imaju problema u radusa character set-om AL32UTF8uz oprez pri podešavanju NLS_LANG iNLS_LENGTH_SEMANTICS nema većih zaprekaza korištenje character set-a UTF8višebajtni character set traži veće smještajne(storage) kapacitete30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.


Hvala <strong>na</strong> pozornosti... :)24... pitanja?30.09.2007.12.konferencija <strong>HrOUG</strong>, Rovinj, listopad 2007.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!