Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Kodowanie :/, Wszystkow w UTF-8, a pokazuje latin1 ...
DREEMus
post
Post #1





Grupa: Zarejestrowani
Postów: 286
Pomógł: 34
Dołączył: 4.09.2008
Skąd: Wrocław

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


Screen z phpMyAdmin 3.1.3:
phpMyAdmin

Widok tabel (PMA):
kodowanie tabeli

Widok komórki (PMA):
komórka

widok z komórki mnie zdziwił, żeby to sprawdzić użyłem funkcji z php.net ...
  1. <?php
  2. $link = mysql_connect ('localhost', 'user', 'pass');
  3. $charset = mysql_client_encoding ($link);
  4.  
  5. echo 'Obecny zestaw znaków to: ' . $charset;
  6.  
  7. // Wynik: latin1
  8. ?>


i teraz myślę, gdzie ustawiłem złe kodowanie ... wszędzie gdzie jest to możliwe (z techniczne strony) jest ustawione UTF-8 ...
zobacze z "mysql_set_charset" czy coś się zmieni ...

----- ----- -----

  1. <?php
  2. $dbPolacz = mysql_connect ('localhost', 'user', 'pass');
  3. $dbKodowanie = mysql_set_charset ('UTF8');
  4. $dbWybierz = mysql_select_db ('dreemus');
  5. $dbWynik = mysql_query ('SELECT * FROM tabela WHERE id = 1')
  6.    or die ('Błąd!');
  7. $row = mysql_fetch_assoc ($dbWynik);
  8.  
  9. echo 'Obecny zestaw znaków to: ' . mysql_client_encoding () . '<br />';
  10. echo $row['powitanie'];
  11. ?>


Teraz w przeglądarce pokazało mi krzaczki, ale to dobrze ... teraz wiem, że mam dobre kodowanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Wszędzie widzę polskie znaki (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Tylko, nadal nie rozumiem, dlaczego kodowanie musiałem ustawić podczas połączenia, skoro jest i było ustawione na UTF-8 ... wszędzie ...

Ten post edytował DREEMus 21.03.2009, 05:32:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
thomson89
post
Post #2





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Czasami php nawiązuje połączenie z bazą w innym kodowaniu niż jest ustawione w bazie.
Go to the top of the page
+Quote Post
Zyx
post
Post #3





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

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


MySQL żąda ustawiania kodowania również dla połączenia sieciowego, by wiedzieć, w jakim kodowaniu utworzone są wiadomości przychodzące do serwera oraz w jakim powinien on zwracać informacje. Stąd jego ustawienie jest wymagane, gdyż w większości systemów domyślnym jest kodowanie "latin1". Prawdę mówiąc nigdy nie przyglądałem się temu, jak to w rzeczywistości funkcjonuje (jakoś nie przyszło mi to do głowy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ), być może tylko rzutowanie z UTF-8 na kodowania ISO nie działa z wiadomych powodów - nie da się odwzorować poprawnie unikodu na takie kodowanie. Niemniej znalazłem swego czasu taki ręcznie zrobiony przez kogoś na podstawie dokumentacji diagram:

http://public.m-plify.net/mysql/MySQL_Charset_Handling.pdf

A jeśli jeszcze chcesz mieć pełen szpan i wyświetlić unikodowe znaki na stronie, to musisz jeszcze wysłać odpowiednie nagłówki HTTP do przeglądarki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

Ten post edytował Zyx 21.03.2009, 08:55:21
Go to the top of the page
+Quote Post

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: 4.10.2025 - 03:19