MySQL i hrvatski znakovi

Poslao tplecko on 01.03.2011 8:10:09
Kako smo došli do problema:
Nedavno sam se zaposlio u firmi koja me tražila da im uštedim nešto novaca i da im smanjim potencijalnu kaznu od BSA.
Za početak sam zamjenio sve servere Linuxom (nije postojao niti AD niti dhcp niti ništa što bi vam palo na pamet staviti u mrežu od 60 računala.

Naravno i MySql sam prebacio na linux - CentOS distra. S tim da nisam ostavio onaj defaultni MySql koji dolazi sa distrom nego sam skinuo sa njihovog sajta instalaciju.

Problem koji se pojavljuje:
Importirao sam podatke sa starog servera preko sqldump fajla. U novoj tablici su mi svi podatci prikazani kao i u staroj (hrvatski znakovi)
I aplikacija koja koristi podatke (VB .NET 4) prikazuje hrvatske znakove. No kada se insertiraju podatci u bazu, čćžšđ se zamjene sa cczsd. Probao prije svakog inserta izvršiti i SET NAMES 'cp1250' COLLATE 'cp1250_croatian_ci'; i en funkcionira. Probao sam izvršiti isto i za UTF8 pa opet ništa.

Ne mogu nać konfiguracijski fajl od mysql-a (nekad davno je bio u /etc/mysql/my.cnf ili /etc/my.cnf

Ima li tko ideju za pomoć?


Hvala

Re: MySQL i hrvatski znakovi

Poslao tplecko on 01.03.2011 8:13:35
btw. ovako su kreirane tablice:
CREATE TABLE `contacts` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`prezime` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
`ime` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
...
...
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=163 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Re: MySQL i hrvatski znakovi

Poslao branko on 02.03.2011 11:07:35
I ja sam imao problema sa 1250 (ili 852) kodnom stranicom.
Čak sam i pisao program u C-u, koji mi je mjenjao znakove prije učitavanja.
Problem je bio i taj što unicode zauzima 2 bajta pa kako su neka polja bila definirana veličinom, nije se moglo ubaciti. Tu sam koristio trikove sa izbacivanjem praznina i slično.
Kako su mnoge tablice bile u dbf formatu, sa dbf2mysql programom sam mogao dobiti dump file i sql skriptu. Malo ručne kemije po skripti i konverzije dump datoteke u utf, datoteke su se mogle direktno učitati u mysql.
Cilj je dobiti utf format u bazi, da se jednom zauvjek riješe problemi.
Treba jednako izbjegavati hrvatski windows standard, kao i hrvatski linux standard (iso), i zadržati se na unicode standardu.

Re: MySQL i hrvatski znakovi

Poslao tplecko on 04.03.2011 14:08:20
Dodao
skip-character-set-client-handshake
character_set_server=cp1250
collation_server=cp1250_croatian_ci

u my.cnf i stvar radi

Probao puno toga ali na kraju je samo ovo pomoglo.
Bez toga bi mi query koj stigne iz aplikacije umjesto čćžšđ u logu prikazao da je stigao sa cczsd


Pozdrav

Re: MySQL i hrvatski znakovi

Poslao ravilov on 07.03.2011 5:05:39
Samo bih htio napomenuti da je danas tehnološki prilično zastarjelo i ograničavajuće koristiti 8-bit charset/encoding, pa ako tek počinješ sa tim što već radiš, možda bolje da razmisliš o UTF-8 ili sličnom multibyte encodingu.

Ova poruka je od: http://www.linux.hr/newbb/viewtopic.php?forum=7&topic_id=2430