Tomasz Szymik

Tomasz Szymik ekspert ds.
integracji systemów
informatycznych

Temat: Problem z kodowaniem MySQL

Też miałem problem z MySQL i latin2
Koniec końców udało mi się wszystko opanować - polecam eksperymenty z poleceniami jak poniżej ;) Pewnie nie wszystko jest potrzebne,ale... od przybytku głowa nie boli :-)

mysql_query("SET NAMES latin2");
mysql_query("SET collation_server = 'latin2_general_ci'");
mysql_query("SET collation_connection ='latin2_general_ci'");
mysql_query("SET collation_database = 'latin2_general_ci'");
mysql_query("SET character_set_client = 'latin2'");
mysql_query("SET character_set_connection = 'latin2'");
mysql_query("SET character_set_database = 'latin2'");
mysql_query("SET character_set_results = 'latin2'");
mysql_query("SET character_set_server = 'latin2'");
mysql_query("SET character_set_system = 'latin2'");
Łukasz Popko

Łukasz Popko programista PHP
(symfony 3/4),
javaScript (jQuery,
Vue, v...

Temat: Problem z kodowaniem MySQL

musisz zrobic wszystko zeby dany plik był zapisany w takimo kodowaniu jakigo oczekujesz...

nie koniecznie konfiguacja serwera... ale samego pliku skryptu...

header('Content-Type: text/html; charset=utf-8'); np na latin2...

jeżeli zamierzasz coś pisać... w okoreślonym standardzie znaków.. to staraj sie tego trzymać.. też mozna w header() ustawić zeby był znacznik "PL" ale choroba za mocno pijany jestem aby sobie przypomniec :)
Tomasz Wójcik

Tomasz Wójcik inżynier informatyk,
specjalizacja: sieci
komputerowe

Temat: Problem z kodowaniem MySQL

http://dev.mysql.com/doc/refman/5.0/en/charset-connect...

Dla leniwych przytoczę:
A SET NAMES 'x' statement is equivalent to these three statements:

SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;

oraz:
A SET CHARACTER SET x statement is equivalent to these three statements:

SET character_set_client = x;
SET character_set_results = x;
SET collation_connection = @@collation_database;

Więc po co aż tyle poleceń SQL, które tylko spowalniają działanie aplikacji?

A moim zdaniem kluczem do braku problemów z kodowaniem jest ustawienie wszystkiego na utf8, zarówno strony jak i bazy danych, a przeglądarki domyślnie i tak wysyłają żądania post zakodowane w utf8.
Łukasz Popko

Łukasz Popko programista PHP
(symfony 3/4),
javaScript (jQuery,
Vue, v...

Temat: Problem z kodowaniem MySQL

no tu sie zgadzam... ale tez jeszcze zalezy jaki masz ty znaków w tej bazie.. czasami TEXT... i BLOB... czy varchar... reagują inaczej...

odpali plik ze skryptem.. zapisz go jako UTF, poten ustaw w bazie utf8_unicode - ewentualnie analogiczne latin2... i hmmm powinno zaskoczyc, chyba że serwer masz dziwnie ustawiony
Grzegorz M.

Grzegorz M. www.avatec.pl

Temat: Problem z kodowaniem MySQL

Z tego co widzę, to problem polega na skopiowaniu bazy z jednego serwera na drugi, i co się wtedy dzieje... ano ślaczki :-) Ja niegdyś rozwiązałem to w śmieszny dosyć sposób - ale skuteczny - napisałem sobie pierw w php programik który pobiera dane z jednej bazy a potem wgrywa je na drugą - zaleta, nie zbierasz plików gdzie kodowanie może być różne, i automatyczne 'kopiowanie' do drugiej. To był jedyny sposób który mnie pomógł.
Adrian Pastuszek

Adrian Pastuszek Specjalista PHP,
Rybnik, Śląsk,
Zdalnie

Temat: Problem z kodowaniem MySQL

co do przenoszenia to przecież wystarczy mysqldump i odpowiednie ustawienia i wszystko ładnie chodzi :)

Problem jednak pojawia się przy przejściu np utf8 => latin2, to w tym momencie faktycznie php i odpowiedni skrypt jest najlepszym rozwiązaniem...
Grzegorz Kiersznowski

Grzegorz Kiersznowski IT Manager @
Autentika

Temat: Problem z kodowaniem MySQL

informacje z tematu powinny wszystko rozwiązac, ale jesli i to nie pomoze (przy budowie strony bo o phpmyadmin tu nie mowie) to zostaje mb_string na ciągach tekstowych.

Swoją drogą mysqldump jest może dobry na localhoscie. Ostatnio przenosiłem bazę danych z jednego serwera na drugi. Oczywiscie nie byly to serwery dedykowane a konta hostingowe. Cóż, kilka dni mi zajęło poskładanie wszystkiego do kupy. Problemy z kodowaniem były ale szybko się uporałem. Za to 50MB plik bazy danych okazał się poważnym problemem (ograniczenie czasu wykonywania skryptu itp)



Wyślij zaproszenie do