ti-enxame.com

Php não exibe caracteres especiais

Eu tenho um .php que recupera o campo publish_up e ecoá-lo. Mas ele não exibe os caracteres especiais, como é, è, û ... Em vez disso, recebo um . Eu configurei isso content="text/html; charset=utf-8" mas não resolve o problema.

Muito obrigado por sua ajuda!

<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

Pode ser devido à codificação do arquivo. Você pode definir a codificação como UTF-8 Por um bom editor de texto como o Notepad ++ ou pela linha de comando. Por exemplo, em sistemas operacionais * nix:

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

Atualização 1

Também pode ser devido à sua codificação MySql. Você pode adicionar essas linhas antes de executar uma consulta (no seu modelo):

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

$jdb1 É sua instância do JDatabase.

Atualização 2

Se caracteres estranhos forem retornados, use utf8_encode(strftime()) para caracteres UTF-8

3
Farahmand

Com base no link (Atualização 2) da Fari, aqui está a solução:

<?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 você não tem a codificação de caracteres correta definida no seu banco de dados. Para descobrir, verifique o agrupamento usado no banco de dados para publish_up. O agrupamento correto a ser usado depende do idioma que seu site usa, mas em geral utf8_general_ci funcionará para a maioria dos sites em inglês (aparentemente utf8_general_ci não suporta adequadamente toda a codificação UTF8 , portanto, se sua versão do mysql suportar você pode usar utf8mb4.)

Para verificar o banco de dados, recomendo usar um programa como o phpMyAdmin.

0
TryHarder