Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: UTF-8, kodowanie
Forum PHP.pl > Forum > Przedszkole
milith
Witam.
Otóż mam taki problem:
skrypt nie rozpoznaje polskich znaków, próbowałem używać wszelkich metod znalezionych na forum, jednak nic nie działa. W miejscu, gdzie powinny znajdować się polskie znaki pojawiają się znaki zapytania.
Oto fragmenty kodu:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <head>
  4. <meta http-equiv="Content-Language" content="pl" />
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. </head>
  7. <body>
  8. <?php
  9. $query = 'insert into t values ( 1, "ąśćąśćąśłćąłść")';
  10. echo $query;
  11. ?>

Jak widać kodowanie ustawione powinno być na utf-8, czyli to obejmujące polskie znaki. Próbowałem również używać mb_internal_encoding("UTF-8"), jednak rezultat był dalej ten sam. Czy ktoś ma jakieś sugestie w związku z tym ?

// Piszę w Notepad++, serwer postawiony na kompie, WAMP 2
krowal
A jakie kodowanie masz ustawione w Notepad++ ? Też powinno być utf-8. Idąc dalej, połączenie z bazą też powinno przebiegać w utf-8, wykonaj mysql_query('SET NAMES utf8') od razu po pierwszym połączeniu z bazą. Tabele też powinny być w utf-8.
Zyx
W tym sęk, że chyba jednak nie próbowałeś wszystkich. Jakbyś dokładniej poczytał, to zauważyłbyś, że w przypadku UTF-8 znacznik META nic nie daje; trzeba wysłać nagłówek HTTP z powiadomieniem o używanym kodowaniu.
milith
Cytat(krowal @ 18.01.2011, 07:12:17 ) *
A jakie kodowanie masz ustawione w Notepad++ ? Też powinno być utf-8. Idąc dalej, połączenie z bazą też powinno przebiegać w utf-8, wykonaj mysql_query('SET NAMES utf8') od razu po pierwszym połączeniu z bazą. Tabele też powinny być w utf-8.

od strony mysql wszystko jest ustawione, tam nie mam problemów z kodowaniem. W Notepad++ również ustawiłem UTF - 8


Cytat(Zyx @ 18.01.2011, 09:07:38 ) *
W tym sęk, że chyba jednak nie próbowałeś wszystkich. Jakbyś dokładniej poczytał, to zauważyłbyś, że w przypadku UTF-8 znacznik META nic nie daje; trzeba wysłać nagłówek HTTP z powiadomieniem o używanym kodowaniu.


Chodzi o header("Content-Type: text/html; charset=utf-8"); ? Jeśli tak, to niestety próbowałem i dalej to samo.
celbarowicz
Gdzie są te znaki zapytania w bazie? czy w formularzu?
Może to się przyda,przed zapisem do bazy i przy odczycie:
  1. <?php
  2. header('Content-type: text/html; charset=UTF-8');
  3. $link=mysql_connect('localhost','root','');
  4. $charset = mysql_client_encoding($link);
  5. if ( $charset != 'utf8' ) {
  6. mysql_set_charset('utf8',$link);
  7. }
  8. mysql_select_db('apartamenty',$link);
  9. .....
  10. ....

kodowanie w notepadzie++ UTF8 ( trzecie od góry)
Daiquiri
milith - tematyka kodowania była na forum poruszana wiele razy (jak sam zauważyłeś), więc napisz chociaż konkrety: które z podanych metod wykorzystałeś oraz gdzie leży problem (w bazie czy w skrypcie). Niestety lwia część problemów z kodowaniem, wynika z niezbyt dokładnego stosowania proponowanych metod smile.gif.

Pamiętaj proszę, że fakt ustawienia kodowania w meta, nie zmienia faktu, że dokument mógł zostać zapisany w zupełnie innym kodowaniu. Proponuję dokładnie zlokalizować miejsce błędu:
1. Ustawiając wszędzie odpowiednie kodowanie (baza + plik*)
2. Zlokalizowanie gdzie pojawia się błąd:
- równocześnie z wysyłaniem danych do bazy, wyświetl je i zobacz jak wyglądają,
- zerknij w bazę czy tam jest OK,
- sprawdź czy inne znaki pisane z "palca" wyświetlają się OK, w Twoim pliku,
3. Dobierz sobie jedną z podanych wyżej (oraz ogólnie na forum) metod.


*plik - dla pewności możesz utworzyć nowy plik z odpowiednim kodowaniem i dopiero potem wkleić do niego zawartość. Sporo użytkowników jest przekonana o poprawnym kodowaniu swojego dokumentu... a potem okazuje się, że tak nie jest smile.gif.
milith
Problem rozwiązany. Jednak było to spowodowane od strony środowiska. Przeinstalowałem notepada++, ustawiłem kodowanie na utf-8 i poszło.
  1. <?php
  2. header ('charset=utf-8');
  3. echo 'żśżłćżłćżśżó';
  4. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.