Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> KODOWANIE ZNAKÓW UTF-8, PHP + MYSQL
smarcz
post
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 12.05.2005

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


Chciałbym tym tematem rozpocząć dyskusję na temat właściwego kodowania pisanych stron czy kodowanie za pomocą iso-8859-2 czy UTF-8.

Bardzo wielu z nas posługuje się konwersją iso-8859-2 - ale przy tym zastosowaniu pojawia się wile problemów.

Proszę zamieszczać odpowiedzi dotyczące:
1) Właściwego sposobu kodowania w php
2) Właściwego sposobu zapisywania treści do baz danych - jaką konwersją
3) Odczytywanie lub przekonwertowanie starych wpisów do baz za pomocą ISO na UTF (i odwrotnie jeżeli by ktoś chciał)
4) Jak kodować same znaki do UTF aby właściwie się wyświetlały - czego używać
5) Jakie meta tagi używać i czy stosować header()?

Myślę że każdy z nas boryka się z takimi problemami, tak więc piszcie i zadawajcie kolejne pytania.

Mam nadzieję, że wielu z nas odnajdzie w tym temacie wiele istotnych informacji

Ten post edytował smarcz 16.09.2007, 16:28:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


Spotkałem się z serwerami, które domyślnie wysyłały nagłówek:
Kod
Content-Type: text/html; charset=iso-8859-1


Zastosowanie w takim przypadku tagu <meta niewiele dawało, bo dla przeglądarki ważniejsze były informacje z nagłówka. Dlatego IMHO warto poświęcić tą jedną dodatkową linijkę kodu na:
  1. <?php
  2.  
  3. header( 'Content-Type: text/html; charset=utf-8' );
  4.  
  5. ?>

żeby w razie czego nadpisać domyślny Content-Type.


No i jeśli zamierzamy kodować w UTF-8 to wypadałoby się o nim czegoś dowiedzieć, np. że niektóre edytory wstawiają na początku pliku BOM, który PHP traktuje jako zwykły tekst.
Albo że znaki zakodowane w UTF-8 są zapisywane pod zmienną ilością bajtów. Dzięki temu nie będziemy ślęczeli godzinami nad problemem typu:
  1. <?php
  2.  
  3. // Plik zapisany w UTF-8
  4.  
  5.  
  6. $test = 'ąąą';
  7.  
  8. echo strtr( $test, 'ąć', 'ac' ); // Zamienia nam jeden znak "ą" na dwa znaki "ac" o_O
  9. echo strtr( $test, array( 'ą' => 'a', 'ć' => 'c' ) ); // A ten zapis działa poprawnie
  10.  
  11. ?>



Ponoć PHP6 ma być bardziej UTF8-friendly. Zobaczymy, może problemy jak ten powyższy z strtr" title="Zobacz w manualu PHP" target="_manual znikną
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 22.08.2025 - 17:02