Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Firebird 2 i UTF8 malformed string problem

[es] :: Firebird/Interbase :: Firebird 2 i UTF8 malformed string problem

[ Pregleda: 3404 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cwele

Član broj: 97663
Poruke: 21
*.041net.co.yu.



Profil

icon Firebird 2 i UTF8 malformed string problem29.01.2007. u 13:21 - pre 208 meseci
Pokusavam da u Firebird 2 database (default character set UTF8 postavljen je
pre kreiranja bilo koje tabele, i tabele to ne menjaju) ubacim nasu cirilicu
bilo preko web sajta ili iz isql-a, i jedino sto dobijam je 'malformed string'
error.
Parameter konekcije mi je takodje UTF8, na .jsp stranici imam

<%@ page contentType="text/html;charset=UTF-8" %>

Da li je nekome tako nesto poslo za rukom na bilo koji nacin ?

Zanimljivo je takodje da je u Firebird 1 bazu (character set = NONE)
ovo islo bez problema, select * from ... je radio bez problema, ali
nisam mogao da nadjem pojedinacni slog kada zadam cirilicnu rec kao parametar
za pretrazivanje (mislim da UPPER() nije radio kako treba) pa sam presao
na Firebird 2. I sada ispada da nisam uopste u stanju niti da ubacim
ciliricnu rec na bilo koji nacin (mada mi je cilj da to uradim preko
web stranice)...
 
Odgovor na temu

viking13
Aleksandar Milanovic
SBB
Novi Beograd

Član broj: 131741
Poruke: 190
*.sbb.co.yu.



Profil

icon Re: Firebird 2 i UTF8 malformed string problem29.01.2007. u 17:54 - pre 208 meseci
Firebird pre verzije 2.0 je totalna katastrofa sto se tiče rada sa UNICODE i UTF znakovima. Sve mu je 3 bajta, što i ne bi bio problem da ti ne dozvoljava da upišeš čak i 3 znaka umesto jednog!

To što je "radilo", je "radilo" je jer mu je bilo svejedno šta trpaš unutra.

Sad je situacija sređena, ali sad moraš da paziš šta hoćeš da upišeš.

Ako si bazu napravio kako treba odnosno stavio DEFAULT CHARACTER SET UTF8; pola problema si rešio.

U parametrima za kačenja na bazu moraš da izabereš charset u kome su ti stringovi.

Ne možeš da podesiš da konekcija koristi UTF8, a da šalješ string po WIN1251 i da očekuješ da ti ga upiše kako treba u bazu.

Za test možeš da probaš sa ISQL-om, za koji kažeš da ne radi, a ja znam da radi. :)

Problem sa ISQL-om je što ga pokrećeš iz DOS shella, pa samim tim koristi CP852 za upis karaktera kada kucaš sa tastature.

Napravi mali test skript recimo ovakav:

Code:

INSERT INTO CITIES(NAME) VALUES ('Beograd');
INSERT INTO CITIES(NAME) VALUES ('Kragujevac');
INSERT INTO CITIES(NAME) VALUES ('Novi Sad');
INSERT INTO CITIES(NAME) VALUES ('Niš');


i snimi ga kao Test.sql.

Zatim ga pozovi sa ovakvom komandnom linijom:

Code:

"C:\Program Files\Firebird\Firebird_2_0\bin\isql.exe" ..\TestDB\Test.gdb -ch WIN1251 -i .\Test.sql -u SYSDBA -p masterkey -b


Ja recimo imam skript koji puni bazu osnovnim podacima prilikom kreiranja, koji je napisan latinicom (win1250), pa mi je parametar -ch WIN1250. Kada bi taj sql fajl snimo u nekom editoru kao UTF8, ne bi to morao da radim.

Nadam se da sam ti pomogao.
viking ®
 
Odgovor na temu

cwele

Član broj: 97663
Poruke: 21
*.227.eunet.yu.



Profil

icon Re: Firebird 2 i UTF8 malformed string problem30.01.2007. u 10:38 - pre 208 meseci
Citat:
viking13:
Problem sa ISQL-om je što ga pokrećeš iz DOS shella, pa samim tim koristi CP852 za upis karaktera kada kucaš sa tastature.


Zatim ga pozovi sa ovakvom komandnom linijom:

Code:

"C:\Program Files\Firebird\Firebird_2_0\bin\isql.exe" ..\TestDB\Test.gdb -ch WIN1251 -i .\Test.sql -u SYSDBA -p masterkey -b



Nadam se da sam ti pomogao.


Ovo sto si napisao zaista radi (stim da mi se Nis vidi kao NiU (sa dve tacke gore na U) kada uradim select iz isql; valjda tako mora ?)

Al opet pokusavam sa cirilicom. Evo sta radim:
Napravim script insert.sql koji u sebi ima samo ovo:

insert into test(polje) values('_neka_cirilica');

- snimim taj fajl sa encoding-om UTF-8

- Zatim pokrecem isql ovako:

isql -ch UTF8 -u 'sysdba' -p 'masterkey'
SQL> create database 'test.gdb' default character set UTF8;
SQL> create table test(polje varchar(20));
SQL> edit insert.sql;
/tu mi se otvori onaj script sa pocetka, ja samo izadjem iz editora i dobijam gresku:
-SQL error code = -104
- Unexpected end of command - line 1, column 1
-----------
-istu poruku dobijam kada posle kreiranja baze i tabele izadjem iz isql i zatim odmah pozovem:

isql 'test.gdb' -ch UTF8 -u 'sysdba' -p 'masterkey' -b -i insert.sql

/Sledeci problem je kako da podesim charset za konekciju u JBoss(Tomcat) 3.2.5 okruzenju,
u firebird-ds.xml sada imam:
<config-property name="Encoding">UTF8</config-property>

ali to nije charset (?), koji JayBird moram da koristim, JayBird 2.0 ne radi sa JBoss 3.2.5 ?
Pa ako neko zna sta ovde treba da stoji..../

Ali najpre da uspem preko isql...

 
Odgovor na temu

delalt

Član broj: 68360
Poruke: 198
*.teol.net.



Profil

icon Re: Firebird 2 i UTF8 malformed string problem30.01.2007. u 12:09 - pre 208 meseci
Probaj sa BlazeTop, kažu da radi sa UTF8, nisam još probao:

http://www.devrace.com/en/blazetop/articles/3684.php

Imaš trial verziju, čini mi se 30 dana, dovoljno da probaš.
Ako uspiješ, opiši malo iskustva..
 
Odgovor na temu

viking13
Aleksandar Milanovic
SBB
Novi Beograd

Član broj: 131741
Poruke: 190
*.sbb.co.yu.



Profil

icon Re: Firebird 2 i UTF8 malformed string problem30.01.2007. u 15:20 - pre 208 meseci
Citat:

Ovo sto si napisao zaista radi (stim da mi se Nis vidi kao NiU (sa dve tacke gore na U) kada uradim select iz isql; valjda tako mora ?)


Ako hoćeš da uradiš select gde vidiš i naša slova treba da uradiš ovo:

Code:

"C:\Program Files\Firebird\Firebird_2_0\bin\isql.exe" ..\TestDB\Test.gdb -ch DOS852 -i .\Test.sql -u SYSDBA -p masterkey -b


I gle čuda - pojaviše se naša slova. Sad skapiraj u čemu je fora. :)

Tebi je bitno da ti baza bude UTF8! Koji kodni raspored koristiš za pisanje i čitanje je manje bitno, pod uslovom da ga pravilno podesiš!

Možeš recimo da imaš Windows aplikaciju za upis podataka koja koristi win1251, i da imaš web applikaciju koja čita te podatke i koristi UTF8. U sve to možeš da imaš i linux aplikaciju koja koristi ISO 8859-5 za upis podataka i da ti sve perfektno funkcioniše.

Kao sto sam već rekao moj skript za punjenje baze defult podacima je win1250 i sve radi bez problema.

Sad sam probao da prebacim taj svoj skript iz win1250 u UTF8 i da kreiram bazu. Dobijam istu grešku kao i ti.

Najverovatnije da "header" UTF fajla (ima dva bajta na početku koja kažu da je to UTF8) zbunjuju ISQL.

Nemoj to da te brine.

Mnogo bitnije je da objasniš ljudima šta ti je klijent za upis i čitanje podataka i da ti neko ko se bavi programiranjem u tome objasni kako da podesis konekciju.
viking ®
 
Odgovor na temu

cwele

Član broj: 97663
Poruke: 21
*.108.eunet.yu.



Profil

icon Re: Firebird 2 i UTF8 malformed string problem31.01.2007. u 12:59 - pre 208 meseci
Citat:
viking13:
Sad sam probao da prebacim taj svoj skript iz win1250 u UTF8 i da kreiram bazu. Dobijam istu grešku kao i ti.

Najverovatnije da "header" UTF fajla (ima dva bajta na početku koja kažu da je to UTF8) zbunjuju ISQL.


- verovatno. Ali uspeo sam da ubacim cirlicu preko Java aplikacije. Ispostavilo se da je podesavanje vrlo jednostavno, a ja sam po ko zna koji put dobio lekciju da najpre dobro proucim poruke (greske) koje mi program javlja pre nego sto se upustim u visednevno uzaludno guglanje :-(

Nije forum za Javu, ali evo, posto je kratko:
- treba koristiti JayBird 2.0.1
- kada se uzima konekcija, treba nejpre uraditi :

FBManagedConnectionFactory.setEncoding('UTF8');
FBManagedConnectionFactory.setCharSet('UTF8');

-ili isto to, ako terate web aplikaciju na JBoss, tada u firebird-service.xml treba postaviti:

<config-property name="Encoding">UTF8</config-property>
<config-property name="CharSet">UTF8</config-property>
------------
- i sad jos jedno pitanje: do sada sam za pregled/administraciju baze (Firebird < 2) koristio mali, besplatan ali izuzetno dobar IB_SQL.
Sada medjutim neka su se pravila promenila (ako se uvede alias u SELECT, onda se on mora koristiti svuda u tom selectu), koja IB_SQL ne postuje kada pravi upit u neke rdb$ tabele.

Pa mi treba neki novi alat (po mogucnosti besplatan, mali, efikasan i da ima i linux verziju :-)

Moze li neko nesto da preporuci, makar samo za win ?

 
Odgovor na temu

viking13
Aleksandar Milanovic
SBB
Novi Beograd

Član broj: 131741
Poruke: 190
*.sbb.co.yu.



Profil

icon Re: Firebird 2 i UTF8 malformed string problem31.01.2007. u 14:02 - pre 208 meseci
Citat:
cwele:- i sad jos jedno pitanje: do sada sam za pregled/administraciju baze (Firebird < 2) koristio mali, besplatan ali izuzetno dobar IB_SQL.
Sada medjutim neka su se pravila promenila (ako se uvede alias u SELECT, onda se on mora koristiti svuda u tom selectu), koja IB_SQL ne postuje kada pravi upit u neke rdb$ tabele.

Pa mi treba neki novi alat (po mogucnosti besplatan, mali, efikasan i da ima i linux verziju :-)

Moze li neko nesto da preporuci, makar samo za win ?


"EMS InterBase & FireBird Manager Lite" i naravno "FlameRobin".
viking ®
 
Odgovor na temu

[es] :: Firebird/Interbase :: Firebird 2 i UTF8 malformed string problem

[ Pregleda: 3404 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.