Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php + MySql] kodowanie zawartości komórek
Forum PHP.pl > Forum > Przedszkole
raf_gc
Co trzeba zrobić, aby php wyswietlały się polskie znaki w wyrazach pobranych z bazy MySQL?
Przy korzystaniu z konsoli MySQL wszystkie rezultaty wyszukiwania mają polskie znaki, natomiast przy wywoływaniu z php zamiast "galeria zdjęć" jest "galeria zdj??", kodowanie strony jest ustawione na iso-8859-2.

Czy trzeba ustawiać jakieś kodowanie? W phpMyAdmin rekordy wyświetlają się poprawnie.
Nightwalker
A jakie masz kodowanie w bazie? sprawdź czy są PL znaczki jak ustawisz kodwowanie strony na utf-8.
mike
Zakładam, że w nagłówku określasz iso-8859-2 oraz, że plik jest zapisany też w tym kodowaniu.
Jeśli nadal nie masz polskich znaków to musisz ustawić kodowanie dla połączenia z bazą dnych.
Jako pierwsze zapytanie, zanim zaczniesz wyciągać dane daj:
  1. SET CHARACTER_SET latin2;

latin2 jest odpowiednikiem iso-8859-2


---added---
Proszę poprawić temat wątku.
Obecny temat jest, ..., w smie go nie ma. Same znaczniki nic nie mówią.
Potem ludzie się dziwią, że wyszukiwarka jest mało efektywna.
raf_gc
Po wykonaniu zapytania
  1. SET CHARACTER_SET latin2;
mój serwer MySQL zwraca błąd:
ERROR 1193 (HY000): Unknown system variable 'CHARACTER_SET'
Po wykoniu
  1. SET CHARACTER SET latin2;

coś się niby zmienia, ale dane nadal nie są poprawnie zapisywane do komórek, zauważyłem, że uzupełniając komórki z poziomu php i odczycie ich z poziomu php wszystko jest ok, ale już z poziomu phpMyAdmin i konsoli MySQL nie ma polskich znaków, próbowałem zmienić kodowanie w pliku konfiguracyjnym phpMyadmin i nic z tego. Chciałbym po prostu mieć możliwośc dodawania rekordów z poziomu phpMyAdmin ale chyba bdę musiał wszystko robic z poziomu php.

A jak można sprawdzić w kodowaniu zapisuje domyslnie konsola MySQL i phpMyAdmin?
em1X
  1. <?php
  2.  
  3. mysql_query("SET CHARACTER SET latin2");
  4. mysql_query("SET collation_connection = latin2_general_ci");
  5.  
  6. ?>


Nie wiem jak u Ciebie ale u mnie to rozwiazalo wszelkie problemy z ogonkami..
raf_gc
Utworzyłem taki skrypt:

  1. <?php
  2. $SQL = mysql_connect("localhost", "root", "root");
  3. mysql_select_db("raf", $SQL);
  4. mysql_query("SET CHARACTER SET latin2");
  5. mysql_query("SET collation_connection = latin2_general_ci");
  6. $query = "create table photos (PostID int not null auto_increment, author varchar(30), date date, time time, title varchar(50), content mediumtext, primary key(PostID))";
  7. mysql_query($query, $SQL);
  8. $query = "insert into photos values(\"0\"\"raf\"\"2006-05-21\"\"14:29\"\"zdjęcia\"\"galeria zdjęć\")";
  9. mysql_query($query, $SQL);
  10. echo "Done!";
  11. ?>


Po otworzenie phpMyADmin widze przy tych polach "latin1_swedish_ci", nie wiem czy się martwić bo phpMyAdmin pkazuje takie zmienne systemowe serwera MySQL:

character set client utf8 latin1
character set connection utf8 latin1
character set database latin1 latin1
character set results utf8 latin1
character set server latin1 latin1
character set system utf8 utf8
character sets dir E:\MySQL\MySQL Server 5.0\share\charsets/ E:\MySQL\MySQL Server 5.0\share\charsets/
collation connection utf8_general_ci latin1_swedish_ci
collation database latin1_swedish_ci latin1_swedish_ci
collation server latin1_swedish_ci latin1_swedish_ci

Co bym nie robił zawsze pojawia sie latin_swedish_ci.
em1X
Mniejsza z tym co pokazuje phpMyAdmin. Czy przy wyswietlaniu przez php danych, polskie znaki są czy nie?
Nightwalker
Gdy będziesz na stronie to (dla firefox) Widok -> Kodowanie Znaków -> i kombinuj z kodowaniami, przez to dojdziesz jakie masz kodowanie w swojej bazie.
raf_gc
Cytat(em1X @ 2006-05-21 14:47:33)
Mniejsza z tym co pokazuje phpMyAdmin. Czy przy wyswietlaniu przez php danych, polskie znaki są czy nie?

Tak ,ale tylko gdy komórki są zapisywane poprzez zapytania MySQL, jesli próbuję to zrobić poprzez phpMyAdmin (kodowanie ascii lub latin2_general_ci) lub poprzez konsolę, to polskich znaków nie ma.

widze, ze będe zmuszony stworzyć skrypt do obsługi bazy danych, dzięki waszym sugestiom doszedłem właśnie, że php zapisuje wszystko dobrze i dlateg dziękuję wam za to.

Jeszce tylko pytanie, jekiego typu komórki powinienem używać do przetrzymywania np newsów ze strony, blob czy mediumtext, a może jakieś inne?
em1X
Blob to raczej dane binarne, multimedia.. Ja zwykle uzywam pola text (ale to wszystko zalezy od potrzeb.. zapraszam do manuala po wiecej informacji)
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.