Codage de caractères (UTF-8 et ISO-8859-1)
Bonjour,
J'ai :
- un serveur web httpd 2.4.3
- un serveur de bases de données mysql 5.5.27
- un interpréteur de scripts php 5.4.7
- un navigateur web firefox 15.0.1
J'ai ce fichier test.sql qui crée une table et insère deux tuples :
Code:
1 2 3 4 5 6 7 8
| DROP TABLE IF EXISTS `mytable`;
CREATE TABLE `mytable`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`value` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `mytable` VALUES (1,'àbc'),(2, 'déf'); |
J'ai ce fichier test.php qui affiche les valeurs stockées dans ma table :
Code:
1 2 3 4 5 6 7 8
| <?php
mysql_connect("localhost", "root", '...');
mysql_select_db("mydatabase");
$query = "SELECT * FROM mytable";
$result = mysql_query($query);
$array = mysql_fetch_array($result);
echo $array['value'];
?> |
Voici mes manipulations pour la base de données :
Code:
1 2 3 4 5
| $ mysql -u root -p
create database mydatabase;
SET NAMES utf8;
source test.sql
SELECT * FROM mytable; |
Jusqu'ici le résultat est bon :
SELECT * FROM mytable;
+----+-------+
| id | value |
+----+-------+
| 1 | àbc |
| 2 | déf |
+----+-------+
2 rows in set (0.00 sec)
Ensuite, au niveau de PHP, je commence par tester en ligne de commandes :
Encore ici, le résultat est bon :
Là ou ça coince, c'est quand je passe par mon serveur web :
Code:
1 2
| $ cp test.php ~/public_html/
$ firefox http://localhost/~yugiohjcj/test.php & |
J'obtiens un losange noir avec un point d'interrogation blanc à l'intérieur à la place de "à".
J'ai regardé l'encodage de mon navigateur web, il est en UTF-8 (View>Character Encoding>UTF-8).
Par contre, si je passe mon navigateur web en ISO-8859-1, alors le caractère s'affiche correctement.
Est-ce que vous voyez pourquoi mon caractère ne s'affiche pas correctement en UTF-8 ?
Merci.