SQLite3 i polskie znaki

0

Witajcie!

Mam problem z polskimi znakami w bazie sqlite.

CREATE TABLE "TEST" (
	"ID"	INTEGER NOT NULL,
	"osoba"	INTEGER NOT NULL,
	"Tytul"	varchar(100),
	"Opis"	TEXT,
	PRIMARY KEY("ID" AUTOINCREMENT)
);

Korzystając z Lazarusa i jego biblioteki ZEOS. łączę się z bazą i dodaję rekordy poprzez uzupełnianie DBEdit oraz DBMemo.
Testowałem programik "polskimi znakami wykorzystując string "zażółć jesień" i wszystko było OK.
Aż tu nagle wpisałem kiedyś dłuższy ciąg: np.:" Karolina zapoznała się z regułami oraz z żółtym żołędziem" i nagle okazało się, że w bazie zapisało mi się: "Karolina zapoznaĹ‚a siÄ™ z żółtym ĹĽoĹ‚Ä™dziem" - (pole OPIS)

W ZConnection mam ClientCodePage = UTF-8; ControlsCodePage: cCP_UTF8;

Lazarus 2.2.6

Co robię źle? Pomożecie?

Sc0li0sis

1

Nie spotkałem się z takim zachowaniem, zarówno łącząc się z bazą za pomocą Zeos jak i SqlDB. Może w kodzie masz przypisane zdarzenie OnSetText, które dokonuje konwersji kodowania znaków?
Przygotuj przykład, będzie łatwiej sprawdzić. Dodatkowo napisz jaka wersja zeos-a.

6

Domyślam się, że Zeos 7.x. Stary i znany błąd. Albo przejdź na wersję 8.x albo dodaj w Properties TZConnection
controls_cp=CP_UTF8
codepage=UTF8
AutoEncodeStrings=OFF
Uwaga - ręcznie wpisz! Bo tam jest kolejny błąd źle ustawiający AutoEncodeStrings. Usunięte w wersji 8.

A sorry podałem rozwiązanie dla Postgresa. Dla SQLLite bedzie to samo co napisałeś - problemem jest AutoEncodeStrings

0

Jesteście niesamowici!
Taka szybka odpowiedź i taka celna!
Przesiadka na ZESO 8 załatwiła sprawę

Wielkie dzięki KKuba

1 użytkowników online, w tym zalogowanych: 0, gości: 1