ďťż

[PHP][MySQL]utf-8 polskie znaki w bazie problem wyszukiwania po polskich znakach

       

Podstrony


telcocafe

Postanowiłem zrobić stronkę w całości w UTF-8 jako iż strona ma być w dwóch wersjach językowych.
Wszytko działa nie mam krzaków na stronie www, czy coś w tym stylu.

Problem dotyczy tego iż polskie znaki są trzymane w bazie w postaci krzaczków (w utf-8).
Kiedy chcę zrobić zapytanie wyświetlenia danych zaczynających się na jakąś literkę stosuję:
SELECT * FROM tabela WHERE pole LIKE '$x%'
Wszystko ładnie działa do momentu kiedy pod zmienną $x nie przekazuje polskiego znaku.
probowałem zastosować iconv jednak to też nic nie daje.

Poniekąd rozwiązałem problem:
Stworzyłem tabele mysql z polskimi literkami w utf-8 wyciągam je i odpowiednio porównuje, wtedy powyższe zapytanie działa, tylko nie wiem dlaczego ale kiedy chce coś wyświetlić na literkę Ą wyświetlają się również wpisy na: Ć, Ę.
To samo jest z Ł, Ń, Ś. Faktycznie reprezentacja tych znaków w utf-8 wygląda identycznie.

Podobne problemy prawdopodobnie będą się również pojawiać w wyszukiwarce na stronie kiedy ktoś wyśle słowo do wyszukania z polskim znakiem.

Może ktoś wie jak rozwiązać ten problem w inny, w pełni działający sposób.

Na koniec jeszcze, czy jest sens tworzenia strony w utf-8? Czy jeśli serwis jest dwujęzyczny, mogę go w całości prezentować w iso-8859-2 ? To by rozwiązało w całości powyższe problemy.



możesz przed wtslaniem zpaytania zrobić funkcję która konwertowalaby polskie znaki na znaki UTF.

robiłem:
iconv("ISO-8859-2","UTF-8",chr($znak));

Jednak to nic nie daje, poza tym jak już napisałem problem jest częściowo rozwiązany, jednak niektóre polskie znaki są reprezentowane w utf-8 w identyczny sposób.

Dlatego ten topic i mój problem jest kierowany bardziej do ludzi którzy robili stronkę w utf-8 i borykali się z podobnym problemem bądź mają jakieś doświadczenie. Gdybanie tutaj nic nie da, nie jestem aż tak zupełnie zielony.
Użytkownik boryssek edytował ten post 08 styczeń 2007, 11:56
Polskie ogonki zapisywane są w utf8 za pomocą dwóch bajtów:

ąćóń wygłąda tak: ąćóń

//edit:
chodzi mi o to, że może do konwersji wysyłasz pojedynczy bajt zamiasta całego znaku
Użytkownik Radek edytował ten post 09 styczeń 2007, 07:39


tak tylko ze w bazie jest to trochę inaczej, sam nie wiem dlaczego. Tak jak już pisałem te podane przez ciebie nie koniecznie muszą pasować do tych w bazie. Poza tym niektóre ogonki są reprezentowane tak sam, o czym także wspomniałem wcześniej.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.