Discussion:
Firebird kodowanie znaków
(Wiadomość utworzona zbyt dawno temu. Odpowiedź niemożliwa.)
J-23
2010-10-11 18:08:56 UTC
Permalink
Witam,
Mam problem z kodowaniem bazy LeftHand jak ono powinno być ustawione by
był polskie znaczki (już pisałem o tym ale bez odzewy). Piszę ponownie
bo nie wierze by ktoś nie próbował :))

Pozdrawiam
wloochacz
2010-10-11 19:37:28 UTC
Permalink
Post by J-23
Witam,
Mam problem z kodowaniem bazy LeftHand jak ono powinno być ustawione by
był polskie znaczki (już pisałem o tym ale bez odzewy). Piszę ponownie
bo nie wierze by ktoś nie próbował :))
Próbował, a jakże - producent.
Do nich napisz.
--
wloochacz
J-23
2010-10-11 20:03:13 UTC
Permalink
Post by wloochacz
Post by J-23
Witam,
Mam problem z kodowaniem bazy LeftHand jak ono powinno być ustawione by
był polskie znaczki (już pisałem o tym ale bez odzewy). Piszę ponownie
bo nie wierze by ktoś nie próbował :))
Próbował, a jakże - producent.
Do nich napisz.
:) próbowałem już ale chyba spróbuje po raz drugi.

Pozdrawiam
max
2010-10-12 07:24:53 UTC
Permalink
Post by J-23
:) próbowałem już ale chyba spróbuje po raz drugi.
Pozdrawiam
Może lepiej dzwonić i posłac trochę "gromów" .
Zadałeś za trudne pytanie i nie wiadomo kto ma odpowiadać na tego typu
problemy ;)

Ewentualnie
http://www.goldenline.pl/ludzie/szukaj?q=LeftHand
Grzegorz Skoczylas
2010-10-12 09:28:58 UTC
Permalink
Post by wloochacz
Post by J-23
Witam,
Mam problem z kodowaniem bazy LeftHand jak ono powinno być ustawione by
był polskie znaczki (już pisałem o tym ale bez odzewy). Piszę ponownie
bo nie wierze by ktoś nie próbował :))
Próbował, a jakże - producent.
Do nich napisz.
Producent może niechętnie udzielać tego typu informacji. Zazwyczaj
producent wolałby, żeby nikt nie grzebał w jego bazie.

Ileż może być tych kodowań? W praktyce prawdopodobnie albo WIN-1250,
albo ISO-8859-2, albo UTF-8, albo UNICODE (ewentualne jeszcze CP852).
Powinno więc wystarczyć pobranie z bazy jakiegokolwiek tekstu
zawierającego jak najwięcej polskich znaków diakrytycznych i
sprawdzenia, które z tych kodowań zostało użyte.

Chyba, że szyfrują dane. Wtedy to już albo dowiesz się szczegółów od
producenta, albo musisz zatrudnić do tego jakiegoś hakera. ;-)
--
Pozdrawiam,

Grzegorz Skoczylas
http://gskoczylas.rekord.pl
----------------------------------------------
J-23
2010-10-14 13:53:02 UTC
Permalink
Post by Grzegorz Skoczylas
Post by wloochacz
Post by J-23
Witam,
Mam problem z kodowaniem bazy LeftHand jak ono powinno być ustawione by
był polskie znaczki (już pisałem o tym ale bez odzewy). Piszę ponownie
bo nie wierze by ktoś nie próbował :))
Próbował, a jakże - producent.
Do nich napisz.
Producent może niechętnie udzielać tego typu informacji. Zazwyczaj
producent wolałby, żeby nikt nie grzebał w jego bazie.
Ileż może być tych kodowań? W praktyce prawdopodobnie albo WIN-1250,
albo ISO-8859-2, albo UTF-8, albo UNICODE (ewentualne jeszcze CP852).
Powinno więc wystarczyć pobranie z bazy jakiegokolwiek tekstu
zawierającego jak najwięcej polskich znaków diakrytycznych i
sprawdzenia, które z tych kodowań zostało użyte.
Przeciągnąłem wszystkie po kolei jakiegoż dostępne pod IBDatabase i dupa :)
Post by Grzegorz Skoczylas
Chyba, że szyfrują dane. Wtedy to już albo dowiesz się szczegółów od
producenta, albo musisz zatrudnić do tego jakiegoś hakera. ;-)
Producent leje na jakiekolwie pytania :)

Pozdrawiam
Grzegorz Skoczylas
2010-10-15 08:04:40 UTC
Permalink
Producent leje na jakiekolwiek pytania :)
Podejrzewam, że wysłałeś e-mail. Spróbuj zadzwonić. W bezpośredniej
rozmowie możesz wyjaśnić, po co ci to, i w razie potrzeby rozwiać
wątpliwości. Wtedy, jak sądzę, masz większe szanse na uzyskanie odpowiedzi.
--
Pozdrawiam,

Grzegorz Skoczylas
http://gskoczylas.rekord.pl
----------------------------------------------
Piotr Trocewicz
2010-10-12 08:22:29 UTC
Permalink
Post by J-23
Witam,
Mam problem z kodowaniem bazy LeftHand jak ono powinno być ustawione by
był polskie znaczki (już pisałem o tym ale bez odzewy). Piszę ponownie
bo nie wierze by ktoś nie próbował :))
Pozdrawiam
Być może nie do końca zrozumiałem z czym jest problem, ale
jakie kodowanie jest w bazie możesz sprawdzić w tabeli RDB$DATABASE.

--
trocek
Tomek D
2010-10-14 14:15:48 UTC
Permalink
Post by J-23
Witam,
Mam problem z kodowaniem bazy LeftHand jak ono powinno być ustawione by
był polskie znaczki (już pisałem o tym ale bez odzewy). Piszę ponownie
bo nie wierze by ktoś nie próbował :))
OIDP, bo było to ze 3 lata temu, to kolumny w bazie są chyba
zadeklarowane jako ANSI, ale zawartość jest w UTF-8. Jak wyciągałem
jakieś dane to trzeba było je "ręczenie" dekodować do potrzebnego
formatu (w moim przypadku WIN1250).

Tomek D.
J-23
2010-10-18 10:57:47 UTC
Permalink
Post by J-23
Witam,
Po rozmowach telefonicznych udało się ustalić iż jest to UTF8, po
ustawieniu tego na IBX nadal mam krzaczki, czy cos oprócz charsetu
IBDatabase mam ustawić jeszcze by bylo ok? o IBExpert nie wspomne

Pozdrawiam
Tomek D
2010-10-18 11:09:09 UTC
Permalink
Post by J-23
Post by J-23
Witam,
Po rozmowach telefonicznych udało się ustalić iż jest to UTF8, po
ustawieniu tego na IBX nadal mam krzaczki, czy cos oprócz charsetu
IBDatabase mam ustawić jeszcze by bylo ok? o IBExpert nie wspomne
Tak jak pisałem wyżej, z tej drogi nie da się skorzystać, bo w bazie
jest zadeklarowane kodowanie ANSI i dla serwera są to ciągi znaków ANSI,
a nie UTF-8. ZTCP to jedyną drogą jest ręczne dekodowanie odczytanych z
bazy danych.

Tomek D.
J-23
2010-10-18 11:52:02 UTC
Permalink
Post by Tomek D
Post by J-23
Post by J-23
Witam,
Po rozmowach telefonicznych udało się ustalić iż jest to UTF8, po
ustawieniu tego na IBX nadal mam krzaczki, czy cos oprócz charsetu
IBDatabase mam ustawić jeszcze by bylo ok? o IBExpert nie wspomne
Tak jak pisałem wyżej, z tej drogi nie da się skorzystać, bo w bazie
jest zadeklarowane kodowanie ANSI i dla serwera są to ciągi znaków ANSI,
a nie UTF-8. ZTCP to jedyną drogą jest ręczne dekodowanie odczytanych z
bazy danych.
czyli jak rozumiem (nie wiem czy dobrze) trzeba skorzystać z api i prze
konwertować w locie bo między Dataset a kontrolka. Mógłbyś chlapnąć
jakimś przykładem. Będę zobowiązany

Pozdrawiam
Norbert
2010-10-18 12:03:24 UTC
Permalink
Post by J-23
czyli jak rozumiem (nie wiem czy dobrze) trzeba skorzystać z api i prze
konwertować w locie bo między Dataset a kontrolka. Mógłbyś chlapnąć
jakimś przykładem. Będę zobowiązany
Odziedzicz po TIBDataset i dodaj konwersje. I najlepiej zrob jakis a'la
plugin, zeby w przyszlosci moc inne rzeczy pod takiego dataseta podlaczac.
A moze uzyc wzorca dekorator?
--
pozdrawiam
Norbert
J-23
2010-10-18 22:29:01 UTC
Permalink
Post by Tomek D
Post by J-23
Post by J-23
Witam,
Po rozmowach telefonicznych udało się ustalić iż jest to UTF8, po
ustawieniu tego na IBX nadal mam krzaczki, czy cos oprócz charsetu
IBDatabase mam ustawić jeszcze by bylo ok? o IBExpert nie wspomne
Tak jak pisałem wyżej, z tej drogi nie da się skorzystać, bo w bazie
jest zadeklarowane kodowanie ANSI i dla serwera są to ciągi znaków ANSI,
a nie UTF-8. ZTCP to jedyną drogą jest ręczne dekodowanie odczytanych z
bazy danych.
Czy to wystarczy do rozkodowania tego, wiem że dopytuje ale chcę być
odpowiednio zorientowany w temacie

http://msdn.microsoft.com/en-us/library/zs0350fy.aspx

Pozdrawiam
Norbert
2010-10-18 22:38:08 UTC
Permalink
Post by J-23
Czy to wystarczy do rozkodowania tego, wiem że dopytuje ale chcę być
odpowiednio zorientowany w temacie
http://msdn.microsoft.com/en-us/library/zs0350fy.aspx
Pozdrawiam
A nie wystarczy po prostu UTF8Decode z unitu System?
--
pozdrawiam
Norbert
J-23
2010-10-18 23:00:07 UTC
Permalink
Post by Norbert
Post by J-23
Czy to wystarczy do rozkodowania tego, wiem że dopytuje ale chcę być
odpowiednio zorientowany w temacie
http://msdn.microsoft.com/en-us/library/zs0350fy.aspx
Pozdrawiam
A nie wystarczy po prostu UTF8Decode z unitu System?
Przyznam że nie wiedziałem o istnieniu tej metody,

Dobrze kombinuje wystarczy przeciążyć tą metodę

function TIBQuery.ParamByName(const Value: string): TParam;
begin
Result := FParams.ParamByName(Value);
end;

Pozdrawiam
Norbert
2010-10-18 23:12:39 UTC
Permalink
Post by J-23
Dobrze kombinuje wystarczy przeciążyć tą metodę
function TIBQuery.ParamByName(const Value: string): TParam;
begin
Result := FParams.ParamByName(Value);
end;
A czemu ParamByName a nie FieldByName? Poza tym tam jest wiecej metod
zwracajacych pole, wiec trzeba i tamte przeciazyc. Poza tym warto
przesledzic zrodla, czy nie da sie tego zrobic na nizszym poziomie.
--
pozdrawiam
Norbert
J-23
2010-10-19 00:00:31 UTC
Permalink
Post by Norbert
Post by J-23
Dobrze kombinuje wystarczy przeciążyć tą metodę
function TIBQuery.ParamByName(const Value: string): TParam;
begin
Result := FParams.ParamByName(Value);
end;
A czemu ParamByName a nie FieldByName? Poza tym tam jest wiecej metod
zwracajacych pole, wiec trzeba i tamte przeciazyc. Poza tym warto
przesledzic zrodla, czy nie da sie tego zrobic na nizszym poziomie.
Fakt ParamByName to nie bedzie to... ok klade sie spac rano pogrzebie w
zrodlach :) dzieki za podpowiedz wszystkim sprawdziłem na " Caption :=
UTF8Decode(IBQuery1.FieldByName('DESCRIPTION').AsWideString) i znaki
są ok teraz tylko po grzebie i znajde gdzie by to umiejscowić w żródłach
IBX i nazwę IBX2UTF8 i będzie ok

Jeszcze raz dzieki za podpowiedzi

Pozdrawiam

Loading...