Въпреки че звучи наистина странно, че вашите mysql данни се извеждат правилно, когато php низовете се провалят при кодирането, начинът, по който бих се опитал да разреша проблема ви, би бил да разбия проблема на стъпки, опитвайки се да идентифицирам къде е генерирано това неправилно кодиране!
На първо място, трябва да опитате да зададете своя default_charset
към utf-8
във файла php.ini, което се прави по следния начин:
default_charset = "utf-8";
Ако не можете да направите това поради ограничения на доставчика, все пак може да сте в състояние да промените стойността по време на изпълнение, като използвате ini_set функция!
Вие също ще искате да се уверите, че уеб сървърът е настроен да извежда и файлове, кодирани в utf-8! В Apache това може да се направи както в httpd.conf, така и с помощта на htaccess файлове:
AddDefaultCharset UTF-8
В този момент, ако всичко се провали, все пак... опитайте да отидете с php заглавки и относителен html набор от знаци:
<?php header("content-type: text/html;charset=utf-8") ?>
<!doctype>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<?php echo "α β γ δ ε ϝ ϛ ζ η θ ι κ λ μ ν ξ ο π ϟ ϙ ρ σ τ υ φ χ ψ ω ϡ" ?>
</body>
</html>
Много е важно обаче вашите файлове да се записват с подходящо кодиране (utf-8 почти винаги е по-добрият избор, помага за предотвратяване на проблеми доста). Ако сте запазили файлове с кодиране различно от utf-8, унищожете ги и създайте нови от старото им съдържание. Понякога редакторите всъщност не могат да превключват правилно кодирането, след като файлът е създаден, въпреки че Notepad++ обикновено се справя добре с това; просто използвайте converto to
не encode in
функция!
Ако все още не работи, въпреки че се надявам да го направи досега, може да разгледате някои други алтернативи на php като mb_detect_encoding , mb_convert_encoding , htmlentities и htmlspecialchars за да отстраните проблема!