Mam problem z poprawnym zapisywanie znaków narodowych (np. polskich, niemieckich czy czeskich) w bazie MySQL.
Mam np. wyraz "Götabergsgatan", który w bazie zapisywany jest jako "Götabergsgatan", czy
"Média", który w bazie jest zapisany jako "Média".
Dane eksportuje później z poziomu phpMyAdmin (format CSV dla MS Excel) i tam również źle wyświetlają się znaki.
Próbowałem tworzyć tabele z różnym kodowaniem...
CREATE TABLE IF NOT EXISTS `ns_dane` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `street` varchar(255) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `ns_dane` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `street` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; CREATE TABLE IF NOT EXISTS `ns_dane` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `street` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;
Nie wiem czy jest to istotne, ale zapisywanie rekordów robię za pomocą
$query = "INSERT INTO ns_dane (name, street) VALUES ('".$name[1]."', '".$street[1]."')"; $result = $db->query($query);
Będę wdzięczny za pomoc i nakierowanie na rozwiązanie problemu.
Pozdrawiam
R.
Udało mi się rozwiązać problem przy pomocy znalezionego w internecie kodu. Przed zapisaniem danych do bazy przepuszczam je przez:
function makeStringUTF8($data){ { } return utf8_encode(utf8_decode($data)); }