- NevemTeve blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Hányas Orákulum?
Az UTF8 önmagában semmit nem old meg. Azt végig is kell vezetni a rendszeren.
- A hozzászóláshoz be kell jelentkezni
"Duale"? Nem csak "dual"?
- A hozzászóláshoz be kell jelentkezni
A hibaüzenet teszteléséről lenne szó.
- A hozzászóláshoz be kell jelentkezni
Az NLS_LANG környezeti változó mire van állítva, a DB ilyen beállításai, az alkalmazás ilyen jellegű háklijai... stb.
- A hozzászóláshoz be kell jelentkezni
https://lzsiga.users.sourceforge.net/ekezet.html
Azt még nem mondtam, hogy ezt én írtam, szóval a triviális gondokat már kezeltem volna.
Most azt kellene megnézni, hogy a DB-től jövő hibaüzeneten rajta van-e az 'is_utf8' jelző, meg az eredeti SQL-utasításon ugyanez. (Mindkettőre 'igen' válasz kellene.)
- A hozzászóláshoz be kell jelentkezni
A DB-ből UTF8 jön vissza, sqlplus-ban NLS_LANG-tól függően jó/nem jó a hibaüzenet - a hibás select-et mindkét esetben rendesen írja ki...
- A hozzászóláshoz be kell jelentkezni
Az Sql*Plus echozza a hibás utasítást?
- A hozzászóláshoz be kell jelentkezni
Első ránézésre azt mondanám, hogy van egy DBI::errstr nevű változó, ami szerintem jobb lenne, ha UTF8-ban lenne. [Szerk: mármint abban van, csak nincs beállítva az 'is_utf8' jelzőbit rajta]
Lásd még ezt: https://metacpan.org/pod/DBI#set_err
- A hozzászóláshoz be kell jelentkezni
Ahogy most érteni vélem, hogy a Perl source kétféle kódolásban lehet (mármint az interpreter szerint), az egyik az UTF-8 ('use utf8'), a másik a 'mitbánomén' ('no utf8').
Ha az utóbbit konvertálni akarjuk utf8-ra/-ról, azt csinálhatjuk úgy, hogy explicit megadjuk a használt kódolást (Encode modul), vagy a default-ra hagyatkozunk (utf8 modul), ami az ISO-8859-1.
- A hozzászóláshoz be kell jelentkezni
Ez valamit segített, de nem 100%
my $err = $DBI::errstr;
+ _utf8_on($err);
debugmsg(3, sprintf("line %d DBI::errstr='%s' is_utf8=%d", __LINE__, $err, is_utf8($err)));
Ezt sikerült vele:
ORA-00942: table or view does not exist (DBD ERROR: error possibly near <*> indicator at char 36 in 'select 'árvíztűrő tüköfúróg\xFFFD<*>\xFFFDp' from duale')
Vagyis bele akarta illeszteni a stringbe a <*>
részt, és ügyesen kettévágott egy utf8 szekvenciát. (Ezt a DBD-Oracle csinálja, azon belül az oci8.c)
- A hozzászóláshoz be kell jelentkezni