it-swarm-eu.dev

Php non mostra caratteri speciali

Ho un .php che recupera il campo publishing_up e lo fa eco. Ma non mostra i caratteri speciali come é, è, û ... Invece ottengo un . Ho impostato questo content="text/html; charset=utf-8" ma non risolve il problema.

Grazie mille per il vostro aiuto!

<html>
    <head>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">    
    </head>
<body>
      <?php                                 
      $oldLocale = setlocale(LC_TIME, 'en_US');
      echo strftime("%a %d %b %Y", strtotime($jitem1->publish_up)); 
      setlocale(LC_TIME, $oldLocale);
     ?>
</body>
</html>
5
MagTun

Potrebbe essere dovuto alla codifica del file. Puoi impostare la codifica su UTF-8 Da un buon editor di testo come Notepad ++ o dalla riga di comando. Per exmaple nei sistemi operativi * nix:

iconv -f ascii -t utf-8 "test.php" -o "utf8.test.php"

Aggiornamento 1

Inoltre potrebbe essere dovuto alla tua codifica MySql. È possibile aggiungere queste righe prima di eseguire una query (nel modello):

$jdb1->execute("SET NAMES 'utf8'");
$jdb1->execute("SET CHARACTER SET utf8");
$jdb1->execute("SET SESSION collation_connection = 'latin1_general_ci'");

$jdb1 È l'istanza di JDatabase.

Aggiornamento 2

Se vengono restituiti caratteri strani, utilizzare utf8_encode(strftime()) per i caratteri UTF-8

3
Farahmand

Sulla base di link (Update 2) di Fari ecco la soluzione:

<?php $oldLocale = setlocale(LC_TIME, 'fr_FR');
$date_string = utf8_encode(strftime('%d %B %Y', strtotime($jitem1->publish_up)));
echo $date_string;
setlocale(LC_TIME, $oldLocale); 
?>
0
MagTun

Sembra che tu non abbia la codifica dei caratteri corretta impostata nel tuo database. Per scoprirlo, controlla le regole di confronto utilizzate nel database per publishing_up. La raccolta corretta da utilizzare dipende dalla lingua utilizzata dal tuo sito Web, ma in generale utf8_general_ci funzionerà per la maggior parte dei siti Web in lingua inglese (apparentemente utf8_general_ci non supporta correttamente tutta la codifica UTF8 , quindi se la tua versione di mysql supporta potresti voler usare utf8mb4 invece.)

Per controllare il database, consiglio di utilizzare un programma come phpMyAdmin.

0
TryHarder