[PHP][MySQL] Kodowanie znaków |
[PHP][MySQL] Kodowanie znaków |
25.04.2008, 17:16:39
Post
#1
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 0 Dołączył: 30.03.2006 Skąd: Żary Ostrzeżenie: (0%) |
Mam plik php, który jest kodowany w systemie UTF-8, nagłówek jaki jest wysyłany to:
i kod html Cytat <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> Php my admin (strona główna): Cytat System kodowania znaków dla MySQL: UTF-8 Unicode (utf8) System porównań dla połączenia MySQL: utf8_unicode_ci Zaś baza danych w której są zapisywane informacje jest kodowana w systemie latin1_swedish_ci. Polskie znaki są kodowany w taki sposób Cytat śńłąşź Jeżeli w php my adminie zmienię kodowanie dla pola na inne typu latin2_general_ci, lub utf8_unicode, to nie daje rezultatów. Co mam zmienić, by polskie znaki były kodowane poprawnie w bazie danych. Nie zależy mi na ich wykorzystywaniu na stronach. Chodzi tylko o poprawne kodowanie w bazie danych. Ten post edytował Krisu 25.04.2008, 17:43:24 |
|
|
25.04.2008, 18:16:51
Post
#2
|
|
Grupa: Zarejestrowani Postów: 289 Pomógł: 77 Dołączył: 5.08.2006 Ostrzeżenie: (0%) |
zmień w bazie na utf-8 (podejrzewam że dane będziesz musiał wprowadzić jeszcze raz), pobierz dane i wyświetl na stronie zakodowanej w utf-8. Zobacz rezultat i napisz
Ten post edytował _olo_1984 25.04.2008, 18:17:31 -------------------- awake
|
|
|
25.04.2008, 18:24:04
Post
#3
|
|
Grupa: Zarejestrowani Postów: 379 Pomógł: 45 Dołączył: 30.06.2007 Ostrzeżenie: (10%) |
Miałem podobny przypadek z tym, że przenosiłem dane z jednej bazy danych na drugą. Niestety musiałem wprowadzić dane od nowa
Chyba, że ktoś wie jak to "obejść" to przyda się na przyszłość -------------------- Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł" |
|
|
25.04.2008, 18:45:36
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) |
Cytat Chyba, że ktoś wie jak to "obejść" to przyda się na przyszłość przepuścić zrzut bazy sql przez http://www.gzegzolka.com/ I tabele w bazie od samego początku należy kodować w utf-8 wtedy nie będzie takich problemów. Ten post edytował ExPlOiT 25.04.2008, 18:49:55 |
|
|
25.04.2008, 19:21:43
Post
#5
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 0 Dołączył: 30.03.2006 Skąd: Żary Ostrzeżenie: (0%) |
Czyli tworząc bazę danych z poziomu php mógłbym od razu ustalać typ kodowania danych?
mysql_query('SET NAMES UTF-8'); Pokombinuje jeszcze ale jak nie zadziala to bede pisał |
|
|
25.04.2008, 19:23:11
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) |
poprostu ustawiasz kodowanie tabeli na utf-8 i wtedy przy tworzeniu zrzutu bazy niebędzie żadnych problemów z kodowaniem.
|
|
|
25.04.2008, 19:28:59
Post
#7
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 0 Dołączył: 30.03.2006 Skąd: Żary Ostrzeżenie: (0%) |
Ma być samo UTF-8, bez żadnych utf8_unicode_ci, lub utf8_general_ci?
No i czy wystarczy ustawic dla tabeli, czy jeszcze dla pola trzeba to samo zrobić? |
|
|
25.04.2008, 22:53:42
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
SET NAMES utf8
Dla kolumn utf8_polish_ci, bo przy innych będzie Ci źle wg diakrytyków sortować. ;] -------------------- ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
25.04.2008, 23:55:55
Post
#9
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 0 Dołączył: 30.03.2006 Skąd: Żary Ostrzeżenie: (0%) |
Mimo wszystko nadal błędnie koduje znaki. bo albo zamienia je na lub tak jak wyżej pisałem.
Może spytam tak. Jakie kodowanie obsługuje wszystkie polskie znaki? Jeśli miałbym tą informację, to już wykombinowałbym coś własnoręcznie. |
|
|
26.04.2008, 00:27:52
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) |
Kurde mi normalnie działa utf-8, mam polski znaki. Błąd był popełniony zapewne przy tworzeniu projektu bazy, gdzie kodowanie było inaczej ustawione niż utf-8. Będziesz musiał przepuścić zrzut bazy sql przez jakiś konwerter nic innego nie zrobisz. A robiłeś tak na stronie że odrazu po podłączeniu do bazy ustawiłeś kodowanie na utf-8?
|
|
|
26.04.2008, 09:53:40
Post
#11
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 0 Dołączył: 30.03.2006 Skąd: Żary Ostrzeżenie: (0%) |
No ok, UTF-8 pięknie działa gdy wprowadzam ręcznie dane do bazy danych, ale gdy dzieje się to ze strony php po przez formularz to już są one źle kodowane. Co w takim wypadku mam zrobić? Od czego to zależy?
Dane wstawiam w ten sposób:
|
|
|
26.04.2008, 10:00:35
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) |
Jakie masz kodowanie pliku tego gdzie masz formularz? Ja wszystkie pliki koduje w utf-8 i dodawanie tekstów z polskimi znakami działa bardzo dobrze. Pobierz sobie program notepad++, otwórz w nim plik z tym formularzem i ten od dodawania do bazy, w programie wybierz Format/Kodowanie w utf-8 i w sekcji head ustaw kodowanie jako utf-8, zapisz plik i powinno być wszystko ok.
Ten post edytował ExPlOiT 26.04.2008, 10:01:49 |
|
|
26.04.2008, 13:36:02
Post
#13
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 0 Dołączył: 30.03.2006 Skąd: Żary Ostrzeżenie: (0%) |
korzystam z KED-a u na samym wstępie zawsze zmieniam kodowanie na UTF-8. Plik w ktorym znajduje sie formularz jest wlasnie tak kodowany i plik ktory zajmuje sie danymi w formularzu i jest includowany takze jest w standardzie UTF-8.
|
|
|
26.04.2008, 15:52:57
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 173 Pomógł: 121 Dołączył: 24.09.2007 Skąd: Toruń Ostrzeżenie: (0%) |
a panel phpMyAdmin? Jaki masz w nim kodowanie ustawione?
|
|
|
26.04.2008, 17:08:51
Post
#15
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 0 Dołączył: 30.03.2006 Skąd: Żary Ostrzeżenie: (0%) |
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: utf8_general_ci |
|
|
26.04.2008, 23:49:49
Post
#16
|
|
Grupa: Zarejestrowani Postów: 229 Pomógł: 13 Dołączył: 31.05.2007 Ostrzeżenie: (10%) |
Ja mam tak:
Metoda porównywania napisów - utf8_general_ci Każda tabela w bazie:
Pliki zapisywane w utf-8 (bez sygnatury) Po połączeniu z bazą:
I wszystko działa jak należy. |
|
|
27.04.2008, 09:57:08
Post
#17
|
|
Grupa: Zarejestrowani Postów: 211 Pomógł: 0 Dołączył: 30.03.2006 Skąd: Żary Ostrzeżenie: (0%) |
zrobiłem tak samo, jak podałeś, powyżej i wreszcie problem zniknął.
Wielkie dzięki. Pozdrawiam. |
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 17:42 |