| Qui est en ligne ? |
| Il y a : 11 utilisateurs en ligne, consultez le détail |
Forum » Serveur, Réseaux et Programmation » Encodage base de données |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
| Page : [1] |
| Auteur | Message |
|---|---|
|
|
#0 Message posté le : 18-03-2007 à 16:09:04 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 14-08-2005 Nombre de messages : 488 |
Salut les gens. J'ai un fichier *.sql encodé en iso : ac.sql: ISO-8859 C program text, with very long lines. En graphique avec phpmyadmin : Je crée une base dans mysql encodé en latin1, j'importe ce fichier en choisissant comme encodage latin1. Normalement le texte devrait être enregistré dans la base en latin1 et ben non, il est stocké en utf8. En ligne de commande : mysql> CREATE DATABASE `acimflo` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci; Quand je tente de remplir ma table avec mysqldump ça ne marche pas : mysqldump acimflo < ac.sql -p Enter password: -- MySQL dump 10.11 -- -- Host: localhost Database: acimflo -- ------------------------------------------------------ -- Server version 5.0.34-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES latin1 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; -- Dump completed on 2007-03-18 14:53:34 Dans l'accueil de phpmyadmin j'ai ça : MySQL charset: UTF-8 Unicode (utf8). Mes USE de mysql : [ebuild R ] dev-db/mysql-5.0.34 USE="berkdb perl ssl -big-tables -cluster -debug -embedded -extraengine -latin1* -max-idx-128 -minimal (-selinux) -static" 0 kB Mes locales : LANG= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=en_US.UTF-8 Dans un script php quand je mets ces lignes je vois les données encodées en iso (mais en réalité elles sont tjs en utf8 dans la base) : mysql_query( "SET CHARACTER SET 'latin1'" ); mysql_query( "SET NAMES 'latin1'" ); Pourquoi les données sont encodées en utf8 et non pas en iso ? Merci. |
|
|
#1 Message posté le : 18-03-2007 à 16:50:15 |
Naboo Forum : Modérateur Association : Président Arrivé(e) le : 09-04-2006 Nombre de messages : 2085 |
Parce que ta locale est en UTF8. De toutes manières, qu'est-ce que cela change ? Des données ce sont des données, quelque soit leur encodage. Peut-être qu'elles sont encodées en unicode mais tu dois pouvoir les convertir ou demander à y accéder en iso ; la preuve ! Quel est le problème réel ? ------------------------------------- toto |
|
|
#2 Message posté le : 18-03-2007 à 17:40:40 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 14-08-2005 Nombre de messages : 488 |
Le problème c'est que dans la page html encodée en iso je ne vois pas les caractères accentués (ce de la BD). Si je mets le charset de la page html en utf8 c'est les caractères accentués de la page qui passe mal. Je vais tout passer en utf8 mais j'aurais aimé comprendre mon problème d'encodage dans la BD. |
|
|
#3 Message posté le : 18-03-2007 à 18:05:51 |
Naboo Forum : Modérateur Association : Président Arrivé(e) le : 09-04-2006 Nombre de messages : 2085 |
Bah, tu dis ça :
--Message édité par Azollyx le 18-03-2007 à 18:06:09-- ------------------------------------- toto |
|
|
#4 Message posté le : 18-03-2007 à 18:12:38 |
Jedi Forum : Modérateur Association : Membre fondateur Arrivé(e) le : 08-01-2005 Nombre de messages : 4030 |
C'est normal car PHP ne gère pas l'utf8 pour le moment. Il faut utiliser des fonctions peu fiables comme utf8_encode et utf8_decode. Je te recommande d'utiliser html_entities en PHP pour convertir les carctères accentués en code HTML. ------------------------------------- C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon - |
|
|
#5 Message posté le : 18-03-2007 à 18:42:24 |
Scarabée Forum : Inscrit Association : Arrivé(e) le : 14-08-2005 Nombre de messages : 488 |
ok, j'utiliserais html_entities. Si je comprends bien , on ne peux pas stocker des données dans un autre encodage que celui des locales ? Si oui ---> résolu. |
|
|
#6 Message posté le : 18-03-2007 à 21:33:59 |
Naboo Forum : Modérateur Association : Président Arrivé(e) le : 09-04-2006 Nombre de messages : 2085 |
Je pense que c'est au niveau de la configuration de MySQL qu'il faut intervenir et non au niveau du script PHP. ------------------------------------- toto |
|
|
#7 Message posté le : 18-03-2007 à 22:44:10 |
Jedi Forum : Modérateur Association : Membre fondateur Arrivé(e) le : 08-01-2005 Nombre de messages : 4030 |
Moi je pense que c'est au niveau des deux, tout simplement. Les histoires d'encodage ne sont jamais simples. Côté PHP, il faut éviter de sortir des accents, et côté MySQL... ce n'est pas très important du moment qu'on sait comment sont encodées les données. De mon côté, j'utilise toujours l'utf8 avec MySQL. ça ne m'a pour le moment posé aucun problème... ------------------------------------- C'est une situation bien inconfortable que d'être assez sensible à la bêtise pour en souffrir et trop intelligent pour s'en indigner. - Gustave Thibon - |
| Page : [1] |
Forum » Serveur, Réseaux et Programmation » Encodage base de données |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
- Petit scarabée : 0 pastille, moins de 100 messages
- Scarabée : 0 pastille, plus de 100 messages
- Hobbit : 1 pastille, plus de 1000 messages
- Naboo : 2 pastilles, plus de 2000 messages
- Elfe : 3 pastilles, plus de 3000 messages
- Jedi : 4 pastilles, plus de 4000 messages
- Maître Jedi : 5 pastilles, plus de 5000 messages