vieux site avec base en ISO-8859-1 ou windows-1252 vers UTF-8 - PHP - Programmation
Marsh Posté le 30-01-2011 à 23:37:22
T'as pensé d'utiliser un truc comme ça : http://dev.mysql.com/doc/refman/5. [...] nvert.html
pour convertir le tout?
Marsh Posté le 31-01-2011 à 00:07:17
Et tu aurais un truc pour TOUT convertir d'un coup ?
J'ai la flème de chercher et franchement pas le temps, j'ai 200 fichiers PHP faits à la bite et au couteau à repasser dans un HTML propre.
Du coup la DB j'ai pas envie de me faire chier à cherche
Marsh Posté le 31-01-2011 à 00:08:20
oh t'arrives pas à écrire une moulinette pour le faire?
J'ai jamais eu à le faire, désolé
Marsh Posté le 31-01-2011 à 00:12:17
esox_ch a écrit : oh t'arrives pas à écrire une moulinette pour le faire? |
bah PHP et moi on est pas encore totalement copains, et les fichiers HTML que je tape là sont pas totalement propres ya un peu de merde partout.
Mais ptet que je devrais faire une moulinette, tu as raison
Marsh Posté le 31-01-2011 à 00:56:43
edit je viens de modifier le fichier d'import en UTF-8, je redéclare ma base en UTF-8, tout va bien, mais j'ai encore une couille, mes requêtes me crache sur des caractères genre : �
Marsh Posté le 31-01-2011 à 01:32:49
Bon j'ai rajoute des mysql_query("SET NAMES UTF8" ) avant chaque requete dans le PHP en plus d'avoir tout convertis dans la base.
j'ai suivi ce qui était indiqué ici :
http://www.aquatz.com/Encodage-con [...] L_a36.html
Mais j'avoue franchement, pour l'instant j'y vais en mode crado en plusieurs étapes pour le site, je dois livrer un truc dans 2 semaines et je ocnvertis à l'arrache et les trucs qui m'emmerde je les corrige à la bite et au couteau.
Le site que je suis en train de corriger est l'exemple même de ce qu'il ne faut pas faire en HTML/JS et surtout PHP. Je corrige des tonnes de merdes.
Marsh Posté le 31-01-2011 à 07:40:48
Me semblait qu'il y avait moyen de mettre "SET NAMES UTF8" en param pour que ça le fasse automatiquement à chaque requête
Marsh Posté le 31-01-2011 à 08:23:56
sur la base ? j'a rien trouvé, si tu sais ou je suis preneur
Marsh Posté le 31-01-2011 à 08:41:58
putain je retrouve des pans entier de code dégueulasse
Les requetes sql même pas échappées, les login/pass en clair
des globals partout, nan mais pourquoi j'ai accepté ça
Marsh Posté le 31-01-2011 à 09:06:15
Les globals c'est dégueu à la base ou c'est à utiliser à bon escient ?
Marsh Posté le 31-01-2011 à 09:26:21
C'est dégueulasse, car tu ne fais pas la différence entre du get et du post et même les variables que tu déclares dans ton code peuvent être overwrité par une global.
Enfin bref c'est de la merde les globals, mais je suis obligé de les laisser pour le moment
PHP mais pourquoi tu as laissé des milliers de portes ouvertes pour faire du code dégueulasse ?
Marsh Posté le 31-01-2011 à 10:06:53
Il y a encore des codes qui marchent avec register_global à on
ça va être la fête du slip quand les serveurs vont commencer à mettre PHP6
Marsh Posté le 31-01-2011 à 10:27:43
Ben les vieux site de 2006
je suis tombé sur un site merdique et comme le temps est assez compte, je ne change que la charte, c'est contre mes principes de laisser du code de merde, mais je n'ai pas non plus 2 mois pour tout changer.
Ya des requetes SQL partout au milieu des pages, du code de merde partout, du JS pour faire des redirections au lieu d'un header:location.
Enfin bref, c'est codé par un stagiaire.
Marsh Posté le 31-01-2011 à 10:32:34
C'est pas le stagiaire qu'il faut foutre au bûcher, c'est le maître de stage ...
Ton contrat à la base c'est juste de leur changer la charte? C'est risqué de prendre un contrat comme ça sans savoir si c'est MVC ou pas derrière (et là, qqch me dit que ça l'est pas )... Comment tu gères la négociation avec le client?
Marsh Posté le 31-01-2011 à 10:50:31
Nop c'est pour un pote qui fait une fleur à quelqu'un de sa famille
C'est un site de 200 pages à peu prêts ya un truc un peu générique basé sur des templates, mais c'est mega merdique
et puis toute la partie dynamique, accès base and co a été faite à la bite et au couteau.
Et on a décidé de faire le site en 2 temps au vue des délais, car refaire tous les contenus pour les foutre dans un CMS c'est un peu long
Donc pour le moment search and replace massif, même à coup de regexp , ça marche bien
Marsh Posté le 31-01-2011 à 11:09:23
Ah ... les projets faits pour faire une fleur c'est toujours les pires ..
Tu peux pas demander des k€ parce que c'est pour un pote, tu peux pas lui dire que son truc c'est de la merde pour la même raison et tu peux pas l'envoyer se faire foutre
Quasiment à chaque fois chez moi ça s'est fini avec une grosse engueulade .. Heureux de plus être confronté à ce genre de trucs
Marsh Posté le 31-01-2011 à 14:46:03
esox_ch a écrit : Ah ... les projets faits pour faire une fleur c'est toujours les pires .. |
C'est un site qui a été fait par une société et la personne veut se débarasser de la société en question. Je lui ai bien dit que c'était de la belle merde
Comme il paye bien et qu'il peut me rapporter de beaux projets, je lui fait une fleur
Marsh Posté le 31-01-2011 à 15:14:50
y a une méthode pour convertir qui marche pas trop mal c'est
* faire un dump (en iso donc)
* convertir le fichier en UTF8 avec iconv
* quelque regex pour replacer les iso par du set utf8 collate utf8_general_ci;
* ré-importer
Marsh Posté le 31-01-2011 à 16:05:36
esox_ch a écrit : Il y a encore des codes qui marchent avec register_global à on |
On m'avait conseillé ça à une époque
Marsh Posté le 31-01-2011 à 16:10:34
Putain le register_global, ici on n'a réussi à tout purger dans la boite sauf un dernier projet dont j'ai encore la charge.
Je fais tout pour que ce projet meure mais le client y semble attaché, faut dire aussi que c'est son intranet
Marsh Posté le 31-01-2011 à 17:22:05
t'as essayé ça ?
mysql --default-character-set=utf8 base_de_donnees -h host -u user -ppass < fichier_dump
Marsh Posté le 31-01-2011 à 17:41:04
le problème est réglé les mecs hein
et c'était un dump en ISO-8859-1, je l'ai converti en UTF-8, j'ai importé la base en UTF-8 et je foutu des mysql_query("SET NAMES UTF-8" ) un peu partout et basta.
J'ai même pas envie de me faire chier avec ce site, sachant qu'on va le passer sous CMS dans 2 mois.
Pour le moment on doit juste tomber une version statique à l'arrache.
Marsh Posté le 01-02-2011 à 10:47:37
Ca sert à rien de mettre des mysql_query("SET NAMES UTF-8" ) partout, suffit de le faire 1 fois juste après la connexion à la base.
Si tu utilises une classe/fonction pour te connecter et effectuer tes requêtes, tu dois pouvoir facilement factoriser ça
Marsh Posté le 01-02-2011 à 11:48:57
Alisteroid a écrit : Ca sert à rien de mettre des mysql_query("SET NAMES UTF-8" ) partout, suffit de le faire 1 fois juste après la connexion à la base. |
Si j'avais codé le site ça serait le cas, il y aurai même que 2 fichiers PHP et tout le reste en XSL.
Mais je suis sur un vieux site où tout a été fait à la bite et au couteau , donc ya 60 requetes au moins sur le site
Marsh Posté le 21-02-2011 à 13:16:47
Yo !
Qu'est ce que t'as à dire des gros à chaque phrase comme ça ?
Y a ma meuf qui vient parfois faire des recherches sur ce site, et je voudrais pas que ton langage choque
son âme sensible !
Capitch ?
Marsh Posté le 21-02-2011 à 18:52:56
avantgarde a écrit : Yo ! |
Mais gamin, qu'est ce que tu viens foutre sur ce topic, et où est-ce que tu vois que je dis des "gros" ?
Et qu'est-ce qui te permet de me faire la morale ?
Edit : Et j'en ai rien à branler de ta meuf, si elle vient sur ce forum, elle vient pas sur les topics où je suis un point c'est tout !!!
Marsh Posté le 22-02-2011 à 10:20:18
laisse tomber c'est un spam, j'ai vu d'autre message du style
sinon si t'as possibilité sur ton site fait plutôt un mysql_set_charset
Marsh Posté le 22-02-2011 à 11:04:15
gatsu35 a écrit : C'est dégueulasse, car tu ne fais pas la différence entre du get et du post et même les variables que tu déclares dans ton code peuvent être overwrité par une global. |
Si tu codes en PHP 5.3 et suit les recommandations et n'utilise aucun truc deprecated y'a plus vraiment de portes ouvertes...
Les $GLOBALS peuvent avoir un intérêt... Encore faut-il les utiliser à bon escient et ne pas les confondre avec la session où un fichier de config...
Marsh Posté le 22-02-2011 à 11:18:38
tu ne m'apprends rien, j'ai juste pas envie de perdre mon temps à refaire du code de merde, car ce n'est pas le but
Marsh Posté le 22-02-2011 à 11:21:19
Bah si ton but c'était d'en faire le moins possible, la vrai solution c'était simplement de faire un header XHTML correct en notifiant le vrai charset de la page...
Parce que bon, je ne vois pas le soucis d'être en latin-1 si c'est temporaire et que le contenu reste du latin-1 à la base...
Marsh Posté le 22-02-2011 à 11:22:39
MEI a écrit : Bah si ton but c'était d'en faire le moins possible, la vrai solution c'était simplement de faire un header XHTML correct en notifiant le vrai charset de la page... |
nop déclarer le charst ne suffit pas, il faut encoder les fichiers ainsi que les data de la base
Marsh Posté le 22-02-2011 à 11:23:41
MEI a écrit : Bah si ton but c'était d'en faire le moins possible, la vrai solution c'était simplement de faire un header XHTML correct en notifiant le vrai charset de la page... |
nop déclarer le charst ne suffit pas, il faut encoder les fichiers ainsi que les data de la base
Le site va être repassé dans un CMS complet dans quelques mois, mais là c'est juste qu'il doit être propre (en gardant les contenus) avec sa nouvelle charte avant mi-mars. Et ensuite on le passe dans un CMS avec retapage de tous les contenus (qui sont eux aussi dégueulasses)
Marsh Posté le 22-02-2011 à 11:24:13
Tout à fait, si le charset en base ou celui utilisé durant la connexion entre mysql et le navigateur est pas le bon, mettre juste un charset dans le header du html ne suffit pas.
Marsh Posté le 22-02-2011 à 11:32:02
J'ai lu la doc, en 2 min, et en fait il suffisait de faire :
Code :
|
Je me disais bien que MySQL devait avoir une fonction pour choisir le charset client...
Marsh Posté le 22-02-2011 à 12:10:48
j'ai fait un set_names d'apres ce que j'avais lu sur le net et avant la requete, et aussi passer la base en utf-8, ce qui est mieu
Marsh Posté le 22-02-2011 à 13:01:14
gatsu35 a écrit : j'ai fait un set_names d'apres ce que j'avais lu sur le net et avant la requete, et aussi passer la base en utf-8, ce qui est mieu |
cf. : http://php.net/manual/fr/function. [...] harset.php
Citation : |
Marsh Posté le 22-02-2011 à 13:18:08
MEI a écrit : J'ai lu la doc, en 2 min, et en fait il suffisait de faire :
|
http://forum.hardware.fr/hfr/Progr [...] m#t2058620
Marsh Posté le 30-01-2011 à 23:27:14
Je suis actuellement en train de refaire tout un site. Je le refais en plusieurs phases :
Phase 1 : Changement graphique du site, donc changement du code HTML englobant (le contenu interne reste dans un premier temps).
J'ai reconvertis tous les fichiers PHP du site en UTF-8, avec déclaration du charset UTF-8, donc là aucun soucis
mais le problème vient des données provenant de la base mysql, tout est fucké au niveau des accents.
j'ai fait un import de la base, est-ce que je me suis chié dessus en faisant l'import et que j'aurai du déclaré le fichier en ISO-8859-1 ? ou est-ce que ya moyen que je convertisse toute la base en UTF-8
---------------
Blablaté par Harko