|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
Bonjour,
La langue des données stockées est : le français. C'est à dire avec des éèàùô.... L'interclassement du champ de stockage est : utf8_swedish_ci. J'ai aussi essayé : latin1_swedish_ci. Quel est le bon ? Ou faut-il abandonner MySQL ? La page xhtml commence par : Code :
Code :
![]() Quel interclassement pour que MySQL accepte le français ? Et quelle est la bonne entête de page xhtml ? Parce qu'aujourd'hui quand dans un formulaire mon client écrit "Françoise" (par ex) le résultat obtenu relève du n'importe quoi ! Merci ! |
||||
|
|
00
|
|
|
#2 |
![]() ![]() Josselin Développeur Web Inscription : janvier 2004 Messages : 9 050 ![]() |
Tu as l'air de tout mélanger, en plus d'en louper la moitié .. Je t'invite à lire ce tutoriel :
http://j-willette.developpez.com/tut...-site-en-utf8/ qu'on peut évidemment aussi transposer en ISO-8859-1. |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Tu peux également trouver de nombreuses réponses à tes questions dans le tutoriel suivant : http://antoun.developpez.com/mysql5/jeux-collations/
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
Oui, je mélange un peu tout c'est précisément pour cela que je n'y vois pas clair
Merci de vos réponses. ![]() Je vais de ce pas consulter les liens de vos conseils |
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
Après avoir pris connaissance des différents documents, je constate qu'enregistrer du français dans une base de donnée et de l'afficher correctement sur différents navigateurs est une gageure
![]() Je vais essayer. TOUTEFOIS : ne serait-il pas plus simple de tout encoder en base 64 ? PHP fera le reste. Dans ce cas, faire des recherches sur un champs texte contenant du code base 64 serait aussi performant ? Merci |
|
|
00
|
|
|
#6 | ||||
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
Je n'y arrive pas :
Le champ est en utf8_unicode_ci dans MySQL ainsi que la table. J'utilise deux pages de tests dont les entêtes sont : Code :
Code :
Nom : Albert Prénom : àùçë-ô Le résultat sur Prénom est : à ùçë-ô ![]() Les bras m'en tombent
|
||||
|
|
00
|
|
|
#7 |
![]() ![]() Josselin Développeur Web Inscription : janvier 2004 Messages : 9 050 ![]() |
Et l'enregistrement de ton fichier en UTF-8 sans BOM ? Et la connexion à la base de données ?
Faudrait penser à lire les articles en entier. |
|
|
00
|
|
|
#8 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
"Et l'enregistrement de ton fichier en UTF-8 sans BOM ? Et la connexion à la base de données ?"
L'enregistrement : sous zend studion : editer choix possibles utf8 (sans BOM n'y est pas). Dois-je changer d'éditeur de code (300€) pour utiliser MySQL ? Connexion à la base de donnée : PDO. Application stricte des paramètres. J'ai lu les articles en entier ; je les ai appliqués avec les moyens de développement disponibles. Le résultat n'y est pas après trois heures de travail. Je ne pensais pas qu'un SGBD comme MySQL demandât autant d'adaptation de la part de ses utilisateurs. Je suis surpris que ce SGBDR pose pas autant de problèmes pour enregistrer une langue utilisée par des centaines de millions de personnes. Merci Base 64 semble être la technologie la mieux adapté à ce SGBDR :-( |
|
|
00
|
|
|
#9 |
![]() ![]() Josselin Développeur Web Inscription : janvier 2004 Messages : 9 050 ![]() |
Tous les éditeurs font la distinction entre l'UTF-8 et l'UTF-8 sans BOM. Peut-être que Zend Studio emploie un autre terme, comme "sans marque d'ordre des octets" ou en anglais "without byte order mark".
L'utilisation de PDO ne t'affranchit pas de préciser le jeu de caractères utilisé lors des échanges PHP/MySQL. Juste après la connexion, tu dois exécuter la requête : Mais si tu as un site uniquement en français et sans intention de l'internationaliser, tu peux rester en ISO-8859-1. Ce qui fait que : 1. Tes fichiers sont enregistrés en ANSI (ou Windows-1252 (Europe Occidentale)) 2. La meta HTML et le header PHP renseigne le charset comme étant ISO-8559-1 3. Tes champs en bases de données seront alors en latin1_general_ci par exemple 4. La précision du jeu utilisé lors des échanges PHP/MySQL ne te sera plus utile. |
|
|
00
|
|
|
#10 | ||
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
Pour continuer :
La connexion : Code :
Même résultat décevant. |
||
|
|
00
|
|
|
#11 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
Ok,
Ce site est destiné uniquement à des français. Je vais suivre tes conseils. Merci ! Mais un jour ou l'autre, il faudra bien que je maîtrise tout cela... Je vais y passer mon dimanche matin :-/ Encore merci pour le coup de main !
|
|
|
00
|
|
|
#12 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
Je viens donc de passer en latin1.
Accès à phpAdmin : latin1_swedish_ci Interclassement des champs : idem En-tête de la page : Code :
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" /> Champ tel que stocké : "à çéè" Avant d'essayer latin1_general_ci (car les tables contiennent quelques 100 000 données et que je risque de devoir recréer bases, tables, champs et réimporter - j'ignore comment du reste ni avec quel outil....) Je voudrais que vous me guidiez un peu : Ce que je compte faire a une chance d'aboutir ? Le problème vient d'ailleurs ? ... Merci |
|
|
00
|
|
|
#13 | ||
![]() ![]() Josselin Développeur Web Inscription : janvier 2004 Messages : 9 050 ![]() |
- Tu n'as pas laissé le SET NAMES ?
- Tes fichiers sont bien enregistrés en ANSI ? - Tu as bien mis le header PHP en ISO-8859-1 (et ce sur tous les fichiers même inclus) ? - T'as pas un utf8_encode() qui traine ? Si tu as peur qu'un ALTER TABLE te prenne trop de temps, tu peux créer une nouvelle table : Code :
|
||
|
|
00
|
|
|
#14 | ||
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
MERCI !!!!
Voilà tout simplement : Code :
Existe-t-il du code me permettant de dupliquer une base de données entière pour seulement changer l'interclassement ? Depuis une base en utf8 et une autre en latin1_general_ci cohabitent à merveille. Il faut juste pour passer définitivement en utf8 que je revoie tout mon code sur le traitement des chaînes de caractère car je crois que la fonction strlen de PHP va poser problèmes... Merci quand même ! ![]() Jean-Louis |
||
|
|
00
|
|
|
#15 |
![]() ![]() Josselin Développeur Web Inscription : janvier 2004 Messages : 9 050 ![]() |
Il n'existe pas un code tout prêt pour faire ça, non, tu peux à la rigueur faire ta propre routine.
Pour ce qui est des fonctions PHP, pour toutes les fonctions de manipulation de chaine, il faut en effet passer par des fonctions qui gèrent le multi-octets. |
|
|
00
|
|
|
#16 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 199 ![]() |
Ok !
Merci pour ce lien - super. Et encore merci pour toute cette aide en particulier à "Bisûnûrs"
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com