Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Kodowanie znaków
Krisu
post 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:

  1. <?php
  2. header ('Content-type: text/html; charset=UTF-8');
  3. ?>

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
Go to the top of the page
+Quote Post
_olo_1984
post 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
Go to the top of the page
+Quote Post
tomsi
post 25.04.2008, 18:24:04
Post #3





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


Miałem podobny przypadek z tym, że przenosiłem dane z jednej bazy danych na drugą. Niestety musiałem wprowadzić dane od nowa angrysmiley.gif
Chyba, że ktoś wie jak to "obejść" to przyda się na przyszłość snitch.gif


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
PawelC
post 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ść snitch.gif

przepuścić zrzut bazy sql przez http://www.gzegzolka.com/ winksmiley.jpg 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
Go to the top of the page
+Quote Post
Krisu
post 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ł winksmiley.jpg
Go to the top of the page
+Quote Post
PawelC
post 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.
Go to the top of the page
+Quote Post
Krisu
post 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ć?
Go to the top of the page
+Quote Post
erix
post 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!
Go to the top of the page
+Quote Post
Krisu
post 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 questionmark.gif 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.
Go to the top of the page
+Quote Post
PawelC
post 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?
Go to the top of the page
+Quote Post
Krisu
post 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:
  1. <?php
  2. $insert = "INSERT INTO $tableName (dane1) VALUES ('$value')";
  3.  
  4. $insertresults = mysql_query($insert)
  5. or die (mysql_error());
  6. ?>
Go to the top of the page
+Quote Post
PawelC
post 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
Go to the top of the page
+Quote Post
Krisu
post 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.
Go to the top of the page
+Quote Post
PawelC
post 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?
Go to the top of the page
+Quote Post
Krisu
post 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
Go to the top of the page
+Quote Post
Sadu2
post 26.04.2008, 23:49:49
Post #16





Grupa: Zarejestrowani
Postów: 229
Pomógł: 13
Dołączył: 31.05.2007

Ostrzeżenie: (10%)
X----


Ja mam tak:

Metoda porównywania napisów - utf8_general_ci

Każda tabela w bazie:

  1. DEFAULT CHARSET=utf8


Pliki zapisywane w utf-8 (bez sygnatury)

Po połączeniu z bazą:

  1. <?php
  2. mysql_query("SET NAMES 'utf8'");
  3. mysql_query("set character set 'utf8_general_ci'");
  4. ?>


I wszystko działa jak należy.
Go to the top of the page
+Quote Post
Krisu
post 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ął. smile.gif
Wielkie dzięki.

Pozdrawiam.
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: 28.04.2024 - 17:42