it-swarm-es.tech

Php no muestra caracteres especiales

Tengo un .php que recupera el campo publishing_up y lo repite. Pero no muestra los caracteres especiales como é, è, û ... En cambio, obtengo un . He configurado esto content="text/html; charset=utf-8" pero no resuelve el problema.

¡Muchas gracias por tu ayuda!

<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

Podría deberse a la codificación del archivo. Puede establecer la codificación en UTF-8 Mediante un buen editor de texto como Notepad ++ o mediante la línea de comandos. Por ejemplo en * nix OS:

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

Actualización 1

También podría deberse a su codificación MySql. Puede agregar estas líneas antes de ejecutar una consulta (en su modelo):

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

$jdb1 Es su instancia de JDatabase.

Actualización 2

Si se devuelven caracteres extraños, use utf8_encode(strftime()) para caracteres UTF-8

3
Farahmand

Basado en Fari's enlace (Actualización 2) aquí está la solución:

<?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

Parece que no tiene la codificación de caracteres correcta establecida en su base de datos. Para averiguarlo, verifique la clasificación utilizada en la base de datos para publishing_up. La clasificación correcta para usar depende del idioma que use su sitio web, pero en general utf8_general_ci funcionará para la mayoría de los sitios web en inglés (aparentemente utf8_general_ci no admite correctamente toda la codificación UTF8 , por lo que si su versión de mysql es compatible es posible que desee utilizar utf8mb4 en su lugar).

Para verificar la base de datos, recomiendo usar un programa como phpMyAdmin.

0
TryHarder