![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) ![]() ![]() |
Witam
Mam problem związany z PDO. Mianowicie do bazy danych nie chcą mi się dodawać polskie znaki. Kodowanie tabelki mam ustawione na utf8_polish_ci.
I MYSQL_ATTR_INIT_COMMAND również nie działa. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 3 Dołączył: 10.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Set names daj na UTF-8 , a w bazie wszystko na utf_8_unicode_ci
Metodę porownywania połączeń tez |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) ![]() ![]() |
A metodę porównywania połączeń jak zmienić?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 3 Dołączył: 10.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) ![]() ![]() |
Metoda porównywania połączeń: utf8_unicode_ci
Prawie każdy wiersz w tabeli ma: utf8_unicode_ci (prawie, bo mam 2 wiersze INT) Kod prezentuje się następująco:
Rezultat: polskie znaki tj. źćż zamienia na "?" |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 3 Dołączył: 10.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
META
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> Walnij to do htmla Spróbuj bez set names |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) ![]() ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 378 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Wyeksportować z bazy, przekonwertować jakimś sensownym edytorem do poprawnego kodowania czyli UTF8, zaimportować. Ustawić nagłówki w konfiguracji serwera albo przez header. Nie bawić się w badziewie PMA. Mało jest edytorów?
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
1. Porównywanie znaków (nie żadnych połączeń) nie ma żadnego związku z samymi krzaczkami. Jak sama nazwa wskazuje parametr ten nie określa kodowania znaków, a sposób ich porównywania, czyli przykładowo czy znak "L" ma być traktowany jako równy znakowi "ł".
2. Nie ma właściwie żadnego konkretnego argumentu dla użycia kodowania ISO-8859-2 (latin2) zamiast Unikodu (kodowanego UTF-8) w nowych projektach. Lata 90-te i 10-te (dziwnie to brzmi ![]() 3. Każda kolumna powinna mieć nadane kodowanie UTF-8. Możesz również ustawić je jako domyślne kodowanie wszystkich tabel i samej bazy danych - dzięki temu nowe kolumny/tabele automatycznie przyjmą to samo kodowanie. Nie mniej jednak, jeżeli zmieniasz kodowanie istniejącej kolumny musisz jeszcze zmienić zawartość każdej z komórek - sama zmiana kodowania nie konwertuje objętego nim tekstu. Google: MySQL iconv 4. Kodowanie dla połączenia z bazą danych (PDO) ustawia się w DNS-ie PDO: mysql:host=...;dbname=...;charset=utf8;, nie trzeba korzystać z dodatkowych zapytań. 5. Oczywiście jeszcze dane przesyłane ze skryptu również muszą być kodowanie UTF-8 dlatego też zarówno pliki powinieneś zapisać w kodowaniu UTF-8 jak i stronę wyświetlać w tym kodowaniu (kodowanie w nagłówku Content-Type oraz w elemencie <meta /> HTML-a). |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 565 Pomógł: 15 Dołączył: 11.10.2010 Ostrzeżenie: (20%) ![]() ![]() |
Dzięki chłopaki, naprawione
![]() Problem tkwił w tym, że miałem źle zakodowany plik index.php, był w on kodowaniu ANSI ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 17:45 |