Nawet jeśli brzmi to naprawdę dziwnie, że Twoje dane mysql są poprawnie wyprowadzane, gdzie ciągi php nie działają podczas kodowania, sposób, w jaki próbowałbym rozwiązać Twój problem, polegałby na podzieleniu go na kroki próbujące zidentyfikować, gdzie generowane jest to błędne kodowanie!
Przede wszystkim powinieneś spróbować ustawić swój default_charset
do utf-8
w pliku php.ini, co robi się w ten sposób:
default_charset = "utf-8";
Jeśli nie możesz tego zrobić z powodu ograniczeń dostawcy, nadal możesz zmienić wartość w czasie wykonywania za pomocą funkcji ini_set funkcja!
Będziesz także chciał się upewnić, że serwer sieciowy jest również ustawiony na wysyłanie plików zakodowanych w UTF-8! W Apache można to zrobić zarówno w pliku httpd.conf, jak i przy użyciu plików htaccess :
AddDefaultCharset UTF-8
W tym momencie, jeśli wszystko zawiedzie, nadal... spróbuj użyć nagłówków php i względnego zestawu znaków html:
<?php header("content-type: text/html;charset=utf-8") ?>
<!doctype>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php echo "α β γ δ ε ϝ ϛ ζ η θ ι κ λ μ ν ξ ο π ϟ ϙ ρ σ τ υ φ χ ψ ω ϡ" ?>
</body>
</html>
Bardzo ważne jest jednak, aby Twoje pliki były również zapisywane przy użyciu odpowiedniego kodowania (utf-8 jest prawie zawsze lepszym wyborem, pomaga to dość często zapobiegać problemom). Jeśli zapisałeś pliki z kodowaniem innym niż utf-8, zniszcz je i utwórz nowe ze starej zawartości. Czasami edytory nie są w stanie właściwie zmienić kodowania po utworzeniu pliku, mimo że notepad++ generalnie dobrze sobie z tym radzi; po prostu użyj converto to
nie encode in
funkcja!
Jeśli nadal nie działa, chociaż mam nadzieję, że już działa, możesz sprawdzić inne alternatywy php, takie jak mb_detect_encoding , mb_convert_encoding , htmlpodmioty i htmlspecialchars w celu rozwiązania problemu!