Je rencontre un problème avec l'encodage dans un script de lecture de fichier : mon script se trouve dans un fichier PHP encodé en utf8 avec (normalement) tout ce qu'il faut pour que l'utf8 soit imposé. Mon navigateur ouvre aussi par défaut les pages Web en utf8.
Le fichier que je tente de lire, lui, est encodé en "plain text" version Mac. L'encodage porte visiblement le nom de "Mac OS Roman".
Voici le script :
<?php
header('Content-type: text/html; charset=utf8');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
if (file_exists("Test.txt"))
$Tab = file("Test.txt", FILE_IGNORE_NEW_LINES);
else
{
echo "Fichier introuvable.";
exit();
}
foreach($Tab as $Ligne)
echo $Ligne."X<br />";
A l'affichage de chaque ligne, les lettres accentuées sont remplacées par un point d'interrogation dans un losange : �J'ai essayé de forcer l'encodage de chaque ligne en utf8 avec la fonction utf8_encode() :
<?php
header('Content-type: text/html; charset=utf8');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<?php
if (file_exists("Test.txt"))
$Tab = file("Test.txt", FILE_USE_INCLUDE_PATH + FILE_IGNORE_NEW_LINES);
else
{
echo "Fichier introuvable.";
exit();
}
foreach($Tab as $Ligne)
echo utf8_encode($Ligne)."X<br />";
Cette fois-ci, les caractères accentués n'apparaissent plus du tout.Précision : le problème est le même si je lis le fichier avec fgets() plutôt qu'avec file().
Merci d'avance pour vos réponses.