
Otóż z kodowaniem znaków często miałem problemy i zawsze mi się udawało jakoś je rozwiązać. Tym razem jednak nie mogę (być może jest to spowodowane kilkoma godzinami na siłowni). Szukałem na tym forum a także na innych, były różne rozwiązania jednak wszystkie już znałem i żadne z nich nie dało efektu.
Przedstawię problem w kodzie:
mysql> SET names latin2 collate latin2_general_ci; Query OK, 0 rows affected (0.03 sec) mysql> SET charset latin2; Query OK, 0 rows affected (0.02 sec) mysql> SHOW VARIABLES LIKE 'coll'; Empty SET (0.01 sec) mysql> SHOW VARIABLES LIKE 'coll%'; +----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | latin2_general_ci | | collation_database | latin2_general_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+ 3 rows IN SET (0.02 sec) mysql> SHOW VARIABLES LIKE 'char%'; +--------------------------+----------------------------------+ | Variable_name | Value | +--------------------------+----------------------------------+ | character_set_client | latin2 | | character_set_connection | latin2 | | character_set_database | latin2 | | character_set_filesystem | BINARY | | character_set_results | latin2 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/LOCAL/share/mysql/charsets/ | +--------------------------+----------------------------------+ 8 rows IN SET (0.01 sec) mysql> DELETE FROM imgallery_img_newsy; Query OK, 3 rows affected (0.05 sec) mysql> INSERT INTO imgallery_img_newsy VALUES('Ładny utwór żabi'); ERROR 1136 (21S01): COLUMN count doesn't match value count at row 1 mysql> insert into imgallery_img_newsy values(null, '2009-01-01','Ładny utwór ża bi'); Query OK, 1 row affected (0.01 sec) mysql> select * from imgallery_img_newsy; +----+--------------+------------------+ | id | data_dodania | news | +----+--------------+------------------+ | 14 | 2009-01-01 | ťadny utw˘r ľabi | +----+--------------+------------------+ 1 row in set (0.02 sec) mysql>
o dziwo dając wartości w postaci hex znaki pokazują się ok.
mysql> INSERT INTO imgallery_img_newsy VALUES(NULL, '2009-01-01',0xA3); Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM imgallery_img_newsy; +----+--------------+------------------+ | id | data_dodania | news | +----+--------------+------------------+ | 16 | 2009-01-01 | Ł | +----+--------------+------------------+ 3 rows IN SET (0.03 sec)
Mógłbym zamieniać znaki przed dodaniem do bazy na znaki hex jednak wolę poprostu mieć poprawne kodowaine w bazie danych, jednak czym może być ono spowodowane? Wszystkie bazdy danych, tabele, kolumny mają domyślne kodowanie latin2, sztuczki z kodowaniem cp* też już próbowałem, czym więc może być to spowodowane?
Czekam na odp, pzdr.
// EDIT //
TEMAT NIEWAŻNY.
Problem rozwiązany, jednak proszę nie pytać mnie jak to zrobiłem, bo bym musiał się kilka godzin rozpisywać i problem sięgał dalej niż php czy mysql
