Mysql
 sql >> Database >  >> RDS >> Mysql

La codifica dei caratteri greci funziona in HTML ma non in PHP

Anche se sembra davvero strano che i tuoi dati mysql vengano emessi correttamente dove le stringhe php non riescono a codificare, il modo in cui proverei a risolvere il tuo problema sarebbe scomporre il problema in passaggi cercando di identificare dove viene generato questo errore di codifica!

Prima di tutto, dovresti provare a impostare il tuo default_charset a utf-8 all'interno del file php.ini, che è fatto in questo modo:

default_charset = "utf-8";

Se non puoi farlo a causa delle restrizioni del provider, potresti comunque essere in grado di modificare il valore in fase di esecuzione utilizzando ini_set funzione!

Ti consigliamo inoltre di assicurarti che il server web sia impostato per l'output anche di file codificati utf-8! In Apache questo può essere fatto sia in httpd.conf che usando i file htaccess :

AddDefaultCharset UTF-8

A questo punto se tutto fallisce, comunque... prova ad andare con header php e relativo charset html :

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

È molto importante, tuttavia, che i tuoi file vengano salvati anche utilizzando una codifica appropriata (utf-8 è quasi sempre la scelta migliore, aiuta molto a prevenire problemi). Se hai salvato file con una codifica diversa da utf-8, distruggili e creane di nuovi dal vecchio contenuto. A volte gli editor non sono davvero in grado di cambiare le codifiche correttamente una volta creato il file, anche se notepad ++ generalmente funziona bene su questo; usa semplicemente converto to non la encode in caratteristica!

Se ancora non funziona, anche se spero che ormai funzioni, puoi controllare alcune altre alternative php come mb_detect_encoding , mb_convert_encoding , htmlentities e htmlspecialchars per risolvere il problema!