Juz. nie wiem ile tych faq czytam, ale zaden nie pomaga.
Szukam kogos' kto przeniosl dane z dbf-ki do interbase.
Rozwiazalem problem czesciowo - dane z dbf wyrzucam do skryptu SQL.
Nastepnie programikiem konwertuje polskie znaki z dosowego latin2 do
ISO8859_2 (i tak mam zrobiona tabele w firebird).
Potem odpalam isql, lub inne narzedzie sqlowe, podaje ten skrypt i
dostaje nastepujacy komunikat :
arithmetic exception, numeric overflow, or string truncation
-Cannot transliterate character between character sets
Nie pomaga kombinowanie w rozne strony z roznymi stronami kodowymi, nie
wiem juz co robic. Nie pomaga nawet ustawienie :
SET NAMES ISO8859_2;
Pozdrawiam
Rafal
Standardowo to w FB/IB polskie znaki i polskie sortowanie dostepne jest dla:
character set WIN1250 collate PXW_PLK
miab
Problem mam niestety dalej, z dowolnym narzedziem typu isql.
Dla kombinacji potworzylem kilka pol z roznym kodowaniem i dodalem w
IBExpert dane.
Otwieram potem inne narze;dzie typu isql i nie moge nic dodac. Biore
selecta po jednym z pol, widze na ekranie wszystkie polskie literki, a
dodac insertem nie moge.
pozdrawiam
Rafal
W Firebird program clienta jak na przyklad isql , odbc, ado,c api itp,
ktory sie laczy z baza danych
musi miec ustawiana strone kodowa w tym przypadku na WIN1250, bez tego nie
da sie wpisywac polskich zznakow.
To jest na sprawa. A druga przy tworzeniu bazy albo przynajmniej pola w
tabeli tez powinna byc podana strona kodowa WIN1250. Wyglada na to, ze
ktoras z tych rzeczy masz nie ustawiona.
pozdrawiam
Jannusz
Pozdrawiam
Rafal
> Wlasnie kombinuje jak moge i szlag mnie trafia.
> W bazie mam 3 pola tekstowe, kazde ustawilem z innym kodowaniem:
> WIN1250, ISO8859_2 i DOS852.
> W programiku IBExpert zaczelo dzialac cacy, we wszystkie sie da
> wpisac i
> w bazie trzyma to w roznych stronach kodowych.
> Problem mam nadal z np. z isql. Probuje poleceniem SET NAMES ,
> podaje strone kodowa , i zadne z tych trzech nie pomaga. Malo
> tego, jak daje selecta po nazwisku w DOS852, to widze polskie
> literki, cacy, ale dopisac insertem nie moge. Jest w isql jakies
> inne ustawienie strony kodowej oprocz SET NAMES ???
Ja się też męczyłem z tym podobnym problemem - tyle, że z poziomu Javy
chciałem zapisywać dane po polsku:).
Przeczytałem google, readme, tutoriale i co mi wpadło w rękę, robiłem
testy chyba na wszystkich możliwych kombinacjach kodowania, na dwóch
systemach (Linux, W2K) i niestety rezultaty jak u ciebie.
Gdyby ktoś jednak miał działający na 100% sposób na firebirda to proszę
o instrukcje.
--
-=:| Staruszek GG:320000 |:=-
Witam,
Używam Firebirda w pewnym zastosowaniu od dłuższego czasu i z powodzeniem
uzyskuję tam polskie litery. Co prawda nie robie tego w sposób klasyczny,
ale akurat takie było wymaganie i wszystko działa pieknie. Jest to
następujący zestaw działań:
1. Najpierw tworze bazę:
SET SQL DIALECT 3
CREATE DATABASE 'D:\Bazy\FireBird\moja_baza.fdb'
USER 'admin' PASSWORD 'pass'
PAGE_SIZE = 4096
DEFAULT CHARACTER SET WIN1250;
2. Podłączam się do niej
CONNECT 'D:\Bazy\FireBird\moja_baza.fdb'
USER 'admin' PASSWORD 'pass';
3. Tworzę tabelę:
Tutaj małe wyjaśnienie. Dane do tabeli importuję z plików dBase-owych
(Clipper) przekonwertowanych na txt (1rekord=1wiersz txt), więc nie jest to
typowy insert. Niemniej, wszystkie dane zawierające polskie znaczki są
wczytywane poprawnie i wyświetlam je zarówno isql-em jak i programami
łączącymi się z bazą poprzez ODBC.
CREATE TABLE magazyny_ext EXTERNAL FILE 'D:\Bazy\FireBird\dbfs\magazyny.txt'
(
symb_mag CHAR(2),
naz_wa CHAR(30),
new_line CHAR(2) );
CREATE TABLE magazyny (
symb_mag CHAR(2) NOT NULL,
naz_wa CHAR(30),
new_line CHAR(2),
PRIMARY KEY (symb_mag) );
4. Uzupełniam ją danymi:
INSERT INTO magazyny
SELECT symb_mag, naz_wa, new_line
FROM magazyny_ext;
COMMIT;
ALTER TABLE magazyny DROP new_line;
COMMIT;
Nie wiem, czy będzie to pomocne, w każdym razie jeśli nie w tej sytuacji to
pewnie w jakiejś innej ;-)
Pozdrawiam,
Pozdrawiam
Rafal