[MySql] [Delphi] Litera ś i ą

0

Dużo szukałem, męczę się drugi dzień i nic...
Mam sobie MySql na ubuntu. Baza danych kodowana w latin2.
W zeosie ustawiam parametr codepage=latin2 (probowalem rowniez rozwiazan set character set albo set name itd).
I nie wyświetla mi chyba tylko liter ś i ą, inaczej, są litery ć, ó, ż, ź i one się wyświetlają dobrze.
Natomiast litery ś i ą się nie wyświetlają a jak sam wprowadzę nowy rekord z takimi znakami to owszem wyświetla się ale tylko po stronie klienta (jak zapytam o to przez MySql Administratora to mam krzaki) a co za tym idzie nie sortuje sie!
Bardzo proszę o pomoc.

0

Panowie pomocy, już mnie do szału doprowadza ten problem. Miałem przez święta skończyć pisać całą aplikację a ja stoję cały czas w miejscu.

0

Sprobuj na poczatku polaczenia z baza zapodac

set names latin2

(upewnij sie w dokumentacji, bo nie pamietam dokladnie)

0

Właśnie tak robie i taki jest efekt.
Jak tego nie wpiszę to nie mam <ort>w ogóle </ort>polskich liter.
A tak to brakuje tylko ś i ą.

0

A nie mozesz tego zmienic na stare dobre utf8? Z nim nigdy nie mialem problemow.

0

Niestety teraz jak ustwier utf8 to <ort>w ogóle </ort>klapa bo jak dodam jaki kolwiek wpis z polska litera to nic nie zapisze! :(
A jak dodam przez Query Browsera to mam krzaczki pomimo, że po wpisaniu show variables like 'chara%' mam
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

Wiec nie wiem jak to ugryzc?!! :(

0

Jeszcze patrzylem z dll kami.
Skad wziac libmysqld50.dll??
W najnowszym zeosie w ogóle nie ma dll trzeba wczesniejszy relase sciagac.
A te ze wczesniejszej wersji to tak jak wybiorę poprawną wersje czyly mysqld5 to wywala mi błąd Access Violation ... in module 'libmysqld50.dll'. Więc wybieram mysql. Moze w tym tkwi problem.

0

Ok, jakie dokladnie masz ustawione kodowanie w mysql? Sprobuj ustawic dokladnie to samo, nie po prostu latin2.

0

Nie rozumiem.
Teraz mam baze w UTF8, tabele w UTF8, kolumny w UTF8.

0

Czyli masz wszystko w uft8 i dajesz set names utf8 i dalej nic? Co do latin2 to chodzilo mi o to, ze
http://dev.mysql.com/doc/refman/5.0/en/charset-ce-sets.html

0

K U R * *
Z tego wszytskiego zaistalowalem sobie postgresql.
I mam znowu identyczny problem!! :(
Przeintalowalem sobie zeos na inna wersje i nic!
Nie wiem gdzie bledu szukac!
Czy moze mi ktos prosta formatke skompilowac z polaczeniem, query i dbgridem.
Adres serwera to 192.168.1.101
uzytkownik to postgres
haslo 1qaz
Baza Ksiazka
Tabela abc

Bede bardzo wdzięczny wyklucze wtedy podejrzenie kompilatora i komponentow.
Chyba, ze ktos ma jeszcze jakis pomysl! :(
moj mail to [email protected]

0

192.168.1.101 to raczej nie jest adres dostepny z zewnatrz, co? Tutaj nie pomoge, bo Delphi to nie moja dzialka.

0

Serwer nie jest dostepny z zewnatrz i nie bedzie.
Nie chce mi się wierzyć, że nikt nigdy nie spotkał się z takim problemem!
Z jakiej wersji zeosa korzystacie, może tam leży przyczyna...
Na codzien pracuje na SQL Serverze, to jest taki dorywczy projekt, jak to jest z darmowością MySql i Postrgesql. Wiem ze sam serwer w postawowych wersjach jest zupełnie bezpłatny ale nie jestem pewnien co do bibliotek służących do łączenia się z bazą (libmysql.dll).
Projekt będzie komercyjny.

0

Bardzo czesto ludzie mają ten problem. Może nie w Delphi, ale na pewno w połączeniu php-mysql. Set names wystracza. Zobacz bo może w samym programie masz coś walnięte. Moim zdaniem zmiana bazy to był raczej zbędny ruch.

0

Wszyscy maja problem z brakiem <ort>w ogóle </ort>polskich znaków. Ja mam problem tylko z dwoma literami. Baze zminiłem w akcie desperacji.
Czy ktokolwiek moze mi jakos pomoc?????
PROSZE!!!

0

Mogę jedynie ci poradzić napisanie dwóch prostych funkcji, jedna koduje ci "znaczki" polskie ,a druga dekoduje je. Napisałem takie coś kiedyś:

function EncodePLText(text : string) : string;
const pl: array[0..17] of string = ( 'ę', 'ó', 'ą', 'ś', 'ł', 'ż', 'ź', 'ć', 'ń', 'Ę', 'Ó', 'Ą', 'Ś', 'Ł', 'Ż', 'Ź', 'Ć', 'Ń' );
const code: array[0..17] of string = ( 'e', 'o', 'a', 's', 'l', 'z', 'x', 'c', 'n', 'E', 'O', 'A', 'S', 'L', 'Z', 'X', 'C', 'N' );
var
   i : integer;
begin
   for i := 0 to High(pl) do begin
      text := StringReplace(text,pl[i],('%'+code[i]+'%'),[rfReplaceAll]);
   end;
   result := text;
end;

function DecodePLText(text : string) : string;
const
   pl : array[0..17] of string = ( 'ę', 'ó', 'ą', 'ś', 'ł', 'ż', 'ź', 'ć', 'ń',
                                'Ę', 'Ó', 'Ą', 'Ś', 'Ł', 'Ż', 'Ź', 'Ć', 'Ń' );
   code : array[0..17] of string = ( 'e', 'o', 'a', 's', 'l', 'z', 'x', 'c', 'n',
                                  'E', 'O', 'A', 'S', 'L', 'Z', 'X', 'C', 'N' );
var
   i : integer;
begin
   for i := 0 to High(pl) do begin
      text := StringReplace(text,('%'+code[i]+'%'),pl[i],[rfReplaceAll]);
   end;
   result := text;
end;

U mnie zamienia jedynie tekst z TMemo do pola TEXT więc specjalnie nie przejmuje się długością. Ale możesz sporóbować użyć znaków do kodowania z zakresu ASCII 0x80-0xFE wtedy nie musiał byś robić jak ja: dodawać znak "%" przed i za literą; myślę też ,że mysql nie będzie się pluł o takie znaki.

0

zmen w ustawieniach kodowanie na cp 1250 podczas impotru tabeli do mysql-a

0
daroch napisał(a)

Wszyscy maja problem z brakiem <ort>w ogóle </ort>polskich znaków. Ja mam problem tylko z dwoma literami. Baze zminiłem w akcie desperacji.
Czy ktokolwiek moze mi jakos pomoc?????
PROSZE!!!

Zmen w ustawieniach kodowanie na cp 1250 podczas impotru tabeli do mysql-a

a w skrypcie php dodaj po connection mysql_query('SET CHARSET latin2');

0

Nie wiem jak w Zeosie, ale np w MyDACu trzeba zaznaczyc:
-->UseUnicode

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