Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Zapisywanie znaków narodowych w MySQL
Remik37
post 10.01.2015, 16:32:24
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.10.2014

Ostrzeżenie: (0%)
-----


Witajcie!

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...


  1. CREATE TABLE IF NOT EXISTS `ns_dane` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  4. `street` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
  7.  
  8.  
  9. CREATE TABLE IF NOT EXISTS `ns_dane` (
  10. `id` int(11) NOT NULL AUTO_INCREMENT,
  11. `name` varchar(255) NOT NULL,
  12. `street` varchar(255) NOT NULL,
  13. PRIMARY KEY (`id`)
  14. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  15.  
  16.  
  17. CREATE TABLE IF NOT EXISTS `ns_dane` (
  18. `id` int(11) NOT NULL AUTO_INCREMENT,
  19. `name` varchar(255) NOT NULL,
  20. `street` varchar(255) NOT NULL,
  21. PRIMARY KEY (`id`)
  22. ) ENGINE=MyISAM DEFAULT CHARSET=latin2 AUTO_INCREMENT=1 ;



Nie wiem czy jest to istotne, ale zapisywanie rekordów robię za pomocą

  1. $query = "INSERT INTO ns_dane (name, street) VALUES ('".$name[1]."', '".$street[1]."')";
  2. $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:

  1. function makeStringUTF8($data){
  2. if (strpos($data, '&') !== false)
  3. {
  4. $data = html_entity_decode($data, ENT_QUOTES, 'UTF-8');
  5. }
  6.  
  7. return utf8_encode(utf8_decode($data));
  8. }


Ten post edytował Remik37 10.01.2015, 16:43:56
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:28