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>
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"
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.
Se caracteres estranhos forem retornados, use utf8_encode(strftime())
para caracteres UTF-8
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);
?>
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.