sql >> Databáze >  >> RDS >> Mysql

Kódování řeckých znaků funguje v HTML, ale ne v PHP

I když to zní opravdu divně, že vaše data mysql jsou na výstupu správně, kde php řetězce selhávají při kódování, způsob, jakým bych se pokusil vyřešit váš problém, by byl rozdělit problém do kroků, které se snaží identifikovat, kde je toto chybné kódování generováno!

Nejprve byste měli zkusit nastavit default_charset na utf-8 v souboru php.ini, což se dělá takto:

default_charset = "utf-8";

Pokud to nemůžete udělat kvůli omezením poskytovatele, stále můžete mít možnost změnit hodnotu za běhu pomocí ini_set funkce!

Budete se také chtít ujistit, že webový server je nastaven na výstup souborů kódovaných utf-8! V Apache to lze provést jak v httpd.conf, tak pomocí souborů htaccess:

AddDefaultCharset UTF-8

V tomto okamžiku, pokud vše selže, stále... zkuste použít hlavičky php a relativní html znakovou sadu:

<?php header("content-type: text/html;charset=utf-8") ?>
<!doctype>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <?php echo "α β γ δ ε ϝ ϛ ζ η θ ι κ λ μ ν ξ ο π ϟ ϙ ρ σ τ υ φ χ ψ ω ϡ" ?>
    </body>
</html>

Je však velmi důležité, aby se vaše soubory ukládaly také pomocí vhodného kódování (utf-8 je téměř vždy lepší volba, pomáhá předcházet problémům). Pokud jste uložili soubory s kódováním jiným než utf-8, zničte je a vytvořte nové z jejich starého obsahu. Někdy editoři nejsou skutečně schopni správně přepínat kódování, jakmile je soubor vytvořen, i když notepad++ na tom obecně dobře; stačí použít converto to nikoli encode in funkce!

Pokud to stále nefunguje, i když doufám, že už ano, můžete se podívat na některé další alternativy php, jako je mb_detect_encoding , mb_convert_encoding , htmlentity a htmlspecialchars za účelem vyřešení problému!




  1. Volání uložené procedury s parametrem Out pomocí PDO

  2. RU nebo RUR?

  3. Jak Access komunikuje se zdroji dat ODBC? Část 2

  4. Součtový rozsah dat bez počítání překryvů v mysql