Freesco, NND, CDN, EOS
http://forum.freesco.pl/

MySQL ver. 5 i latin1_swedish_ci
http://forum.freesco.pl/viewtopic.php?f=24&t=14868
Strona 1 z 1

Autor:  eel [ wtorek, 27 lutego 2007, 16:07 ]
Tytuł:  MySQL ver. 5 i latin1_swedish_ci

Witam!

Mam nowe php i mysqla i problem. Phpmyadmin jako "Metodę porównywania napisów" domyślnie w każdej tabeli wybiera latin1_swedish_ci. Jak to zmienić, aby standardowo wybierał inną stronę kodową, np. latin2 lub utf8?
Szukałem po forach dot. php i mysqla, ale tam tylko radzą dodać przy instrukcji np. select - charset latin2(...) itp. Mam na serwerku dwa serwisy - joomle i mambo i trochę nie uśmiecha mi się zmieniać każde zapytanie do bazy. Może ktoś wie jak to rozwiązać w prostszy sposób?

Z góry dzięki!

Autor:  JakubC [ wtorek, 27 lutego 2007, 16:41 ]
Tytuł: 

Postanowiłem się przyjrzeć temu problemowi, ponieważ zauważyłem go również u siebie.

Nie leży on ani w php, ani w apache lecz w samej paczce mysql 5.

Wyedytuj /etc/my.cnf

Musisz tam dodać linijkę o domyślnym kodowaniu bazy w sekcji mysqld.

Powinna więc ona wyglądać tak


my.cnf pisze:
[mysqld]
port = 3306
socket = /tmp/mysql.sock
datadir = /var/lib/mysql
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 16K
myisam_sort_buffer_size = 8M
default-character-set=latin2

Ostatnia linia ustawia owe kodowanie.

Paczka mysqla jest do poprawy.

Pozdrawiam

Autor:  eel [ czwartek, 1 marca 2007, 13:38 ]
Tytuł: 

Poczytałem trochę specyfikacji MySQL-a i tam jest tak napisane:
Cytuj:
By default, MySQL uses the latin1 (cp1252 West European) character set and the latin1_swedish_ci collation that sorts according to Swedish/Finnish rules. These defaults are suitable for the United States and most of Western Europe.

One way to change the settings is by recompiling. If you want to change the default server character set and collation when building from sources, use: --with-charset and --with-collation as arguments for configure. For example:

: [/] [] ()
shell> ./configure --with-charset=latin1

Wynika z tego, że trzeba by było przekompilować mysqla. Zauważyłem jednak, że wyświetlane w witrynie polskie znaki są w porządku, jeśli do bazy coś jest dodawane z poziomu jakieś strony, np. w moim przypadku joomla!, ale już nie z poziomu phpmyadmina. Próba zmiany kodowania dla tabeli w phpmyadminie kończy się stratą polskich liter. Spróbuje jeszcze użyć Twojego rozwiązania i dam znać co się zmieniło.

EDIT:
Po dopisaniu tej linii w my.cnf, phpmyadmin rozpoznaje znaki prawidłowo, tabele mają metodę por. znaków latin2, ale za to w serwisie internetowym wartości wybrane z bazy mają "?" zamiast polskich liter. Phpmyadmin, na głównej stronie wyświetla taka informację:
Cytuj:
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)

Jest to info niezależne od wartości ustawionego kodowania w my.cnf. Może to jakoś zmienić?

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/