Convertir page web en UTF-8

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par poupilou, 26 Janvier 2020.

  1. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Salut à tous,

    J'aimerai convertir un vieux site qui a actuellement comme encodage de mes pages php de ANSI en UTF-8, questions :

    1) Existe-il un plugin Notepad++ qui permette de convertir toutes mes pages php, css, js en UTF-8 par lots ?

    2) Pour convertir mes pages, dois-je sélectionner dans Notepad++ "Convertir en UTF-8" ou "Convertir en UTF-8-BOM" ?

    3) Parfois dans certaines de mes page php j'avais remplacé les accents "é" par "é", devrais-je les remplacé par "é" au lieu de "é" ?

    4) Doit-on impérativement convertir les tables MySQL en UTF-8 si je convertis toutes mes pages php en UTF-8 ?

    5) Une autre question qui n'a rien à voir avec ce sujet : avec Notepad++ a-t-on la possibilité de voir si notre code php est valide w3 ?

    Merci pour vos réponses.
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 003
    J'aime reçus:
    284
    1) Pas que je sache, mais tu peux le faire en ligne de commande sous Linux (ou WSL Windows ou Cygwin) avec iconv
    2) UTF8 sans BOM donc "Convertir en UTF-8"
    3) Non
    4) Oui c'est mieux sinon tu auras des soucis, n'oublie pas le SET NAMES 'UTF8' (dépend comment tu query la DB)
    5) Non, de plus c'est le HTML qui doit être validé, pas PHP.
     
  3. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Merci spout.

    1) Quels types de fichiers doivent-être convertis en UTF-8 : php, css, js, etc... ?

    4) Comment faut-il procéder pour convertir les tables MySQL en UTF-8 ? J'ai une base de données avec plus de 100 tables mais qui est utilisé par 5 sites différents, si je convertis un de mes sites en UTF-8 et que je convertis toutes mes tables en UTF-8 ça va bugger pour mes 4 autre sites qui ne sont pas en UTF-8, non ? Faut-il que je crée une nouvelle base données avec mes tables convertis en UTF-8 ?

    5) Existe-t-il un outil qui valide le code html w3 en local (sur notre ordi) ?
     
  4. rick38
    rick38 WRInaute passionné
    Inscrit:
    23 Février 2013
    Messages:
    1 461
    J'aime reçus:
    194
    4) plutôt utf8mb4 pour avoir les merveilleux emojis si populaires désormais.

    (par exemple dans ce forum, ça ne marche pas, pour les emojis récents).
     
  5. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Merci pour vos réponses.

    J'ai MySQL 5.7.23, donc si j'ai bien compris, je rentre dans la console phpMyAdmin le code ci-dessous (en changeant le databasename) :
    Code:
    ALTER DATABASE databasename CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    
    Puis comme j'ai 150 tables, je dois pour chacune de mes tables rentrer ce code (en changeant le tablename) :
    Code:
    ALTER TABLE tablename CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    Comment procéderiez-vous étant donné que j'ai 5 sites (avec beaucoup de pages) connecté sur la même BDD ? Tous ces sites et ma BDD ne sont pas en UTF-8 pour l'instant.

    J'ai trouvé ce script python pour convertir par lots les fichiers php, css, js etc... je l'ai testé en local, il fonctionne mais certains de mes fichiers php ne sont pas convertis en UTF-8, j'ai ce message qui s'affiche dans la console de Notepad++, pourquoi il ne me convertis pas tous mes fichiers php ?
    Code:
    -> Processing C:\Users\PC-Bureau\Desktop\test-site\accueil.php  -> Convertion UTF-8 from ENC8BIT  -> KO !!
    
     
    #6 poupilou, 26 Janvier 2020
    Dernière édition: 26 Janvier 2020
  6. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Je suis entrain de changer l'encodage de mes sites, ils étaient en iso-8859-1 et je les passe en utf-8.

    J'ai ce code php de connexion à ma base de données MySql :
    Code:
    $connexion = @new mysqli($host, $login, $pass, $base);
    $connexion->set_charset('utf8');
    if(mysqli_connect_errno()) {
        printf("Impossible de se connecter à MySQL : %s\n", mysqli_connect_error());
        exit();
    }
    Si je dis pas de bêtise le utf8 dans $connexion->set_charset('utf8'); n'a pas de tiret entre le t le 8 mais le utf-8 de la balise <meta charset="utf-8" /> a un tiret.

    1) Est-ce que le utf8 et le utf-8 sont sensibles à la casse ?

    2) Quand doit-on utiliser le utf8 et/ou le utf-8 ?
     
  7. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 003
    J'aime reçus:
    284
    Je ne sais jamais lequel est le bon, alors Google => StackOverflow comme d'hab :)
     
  8. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Merci spout.

    Autres questions :

    1) Lorsque je tape cette requête show variables like 'char%' via phpMyAdmin, j'obtiens :
    Code:
    character_set_client utf8
    character_set_connection utf8
    character_set_database utf8mb4
    character_set_filesystem binary
    character_set_results utf8
    character_set_server latin1
    character_set_system utf8
    character_sets_dir /usr/share/mysql/charsets/
    
    Est-ce gênant si le character_set_database est en utf8mb4 alors que les autres sont en utf8 ?

    J'ai le character_set_server qui est en latin1 et non pas en utf8, est-ce gênant ?
     
  9. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 003
    J'aime reçus:
    284
    Non
     
    poupilou apprécie ceci.
  10. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Merci spout.

    J'ai un souci avec l'affichage des accents avec les dates en français (par exemple pour "février" le é bug à l'affichage) avec la fonction strftime ça n'affiche pas correctement les accents sur mon ordi mais ça les affichent correctement sur mon serveur dédié (en production), le souci vient donc de ma config sur mon ordi, j'utilise wamp 3.1.4 avec php 7.2.10 et j'ai Windows 7.

    si j'ajoute utf8_encode avant la fonction strftime, l'affichage est bon sur mon ordi mais plus sur mon serveur dédié.
    Code:
    $date_string = utf8_encode(strftime('%d %B %Y', strtotime($post->post_date)));
    Sur ce thread, un gars a eu le même problème que moi, il l'a solutionné en tapant locale -a pour trouver les locales disponibles sur mon ordi, mais sur quoi faut-il taper cette commande (quel logiciel utiliser) ?
     
  11. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 003
    J'aime reçus:
    284
  12. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    J'ai entré print_r(ResourceBundle::getLocales('')); et j'ai comme retour :
    Code:
    fr [286] => fr_BE [287] => fr_BF [288] => fr_BI [289] => fr_BJ [290] => fr_BL [291] => fr_CA [292] => fr_CD [293] => fr_CF [294] => fr_CG [295] => fr_CH [296] => fr_CI [297] => fr_CM [298] => fr_DJ [299] => fr_DZ [300] => fr_FR [301] => fr_GA [302] => fr_GF [303] => fr_GN [304] => fr_GP [305] => fr_GQ [306] => fr_HT [307] => fr_KM [308] => fr_LU [309] => fr_MA [310] => fr_MC [311] => fr_MF [312] => fr_MG [313] => fr_ML [314] => fr_MQ [315] => fr_MR [316] => fr_MU [317] => fr_NC [318] => fr_NE [319] => fr_PF [320] => fr_PM [321] => fr_RE [322] => fr_RW [323] => fr_SC [324] => fr_SN [325] => fr_SY [326] => fr_TD [327] => fr_TG [328] => fr_TN [329] => fr_VU [330] => fr_WF [331] => fr_YT [332]
    
    Donc les langues qui conviendraient le mieux seraient la fr [286] ou le fr_FR [301], j'ai donc configurer mon setlocale comme cela :
    - setlocale (LC_TIME, 'fr'); : la date est bien en français mais les accents ne s'affichent pas correctement sur mon ordi.
    - setlocale (LC_TIME, 'fr_FR'); et setlocale (LC_TIME, 'fr_FR.utf8'); : la date est en anglais dans les 2 cas.

    Concernant la commande linux locale -a, j'ai ouvert le logiciel cmd sur mon ordi, mais dans quel répertoire faut-il aller pour entrer cette commande ? Si je l'a tape telle quelle on m'indique que 'locale' n'est pas reconnu en tant que commande interne ou externe
     
  13. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    J'ai trouvé cette commande systeminfo | findstr "Locale" à taper sous cmd mais elle ne me retourne rien, je ne comprends pas ?
     
  14. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 003
    J'aime reçus:
    284
    Parce qu'elle n'est pas utf8, donc une date "Février" sera foireuse.

    Parce que la locale fr_FR.utf8 n'est pas installée.

    Apparemment on px pas avoir de locale utf8 sous Windows: https://stackoverflow.com/a/16120506
     
  15. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Comment font les webmasters avec ces dates en français sur leur PC Windows en local ? Je dois pas être le seule à avoir ce souci, non ?
     
  16. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 003
    J'aime reçus:
    284
    Sous Windows j'ai réussi:
    PHP:
    <?php
    $locale 
    setlocale(LC_ALL'French_Belgium.utf8');
    var_dump($locale);
    var_dump(strftime('%B'strtotime('01-02-2020')));

    $locale setlocale(LC_ALL'French_Belgium');
    var_dump($locale);
    var_dump(strftime('%B'strtotime('01-02-2020')));
    Code:
    string(19) "French_Belgium.utf8"
    string(8) "février"
    string(19) "French_Belgium.1252"
    string(7) "fvrier"
     
  17. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Merci spout, j'ai essayé ton code mais ça ne marche pas sur mon ordi, les accents sont remplacés par des carrés.

    J'ai essayé les variantes ci-dessous mais les accents ne s'affichent pas correctement sur mon PC :
    Code:
    $locale = setlocale(LC_ALL, 'French_Belgium.utf8');
    $locale = setlocale(LC_ALL, 'French_Belgium');
    $locale = setlocale(LC_ALL, 'French_France.utf8');
    $locale = setlocale(LC_ALL, 'French_France');
    
    J'ai le même souci lorsque j'affiche le résultat de l'envoie un formulaire html, les accents qui étaient dans les champs de mon formulaire sont remplacés par des carrés. En production tout s'affiche correctement, c'est donc sur mon PC que ça va pas, mais que faire ?
     
  18. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    J'ai trouvé le problème des accents dans mon formulaire, j'avais la fonction php strtolower qui mettait en minuscules les champs de mon formulaire une fois qu'il était posté, il suffit de la remplacer par mb_strtolower et les accents s'affichent correctement.... pas si simple cet encodage utf-8 :( il va falloir que je modifie tous mes formulaires.

    Par contre pour le problème d'affichage des dates en français, j'ai pas trouvé de solution pour l'instant.
     
    #19 poupilou, 30 Janvier 2020
    Dernière édition: 30 Janvier 2020
  19. poupilou
    poupilou WRInaute impliqué
    Inscrit:
    9 Février 2004
    Messages:
    809
    J'aime reçus:
    10
    Je teste ce code :
    Code:
    $var = "Salut c'est un échec et màt SUr VÖtrà ça VÜ $ £ % ù @ €";
    $nom = mb_strtolower($var);
    $nom2 = strtolower($var);
    echo "<br><br>nom = $nom<br><br>nom2 = $nom2";
    
    Lorsque j'exécute ce code sur mon ordi chez moi ça donne ça :
    Code:
    nom = salut c'est mou échec et màt sur vötrà ça vü $ £ % ù @ €
    
    nom2 = salut c'est mou �chec et m�t sur v�tr� �a v� $ � % � @ €
    
    Lorsque j'exécute ce même code sur mon serveur dédié (en production) ça donne ça :
    Code:
    nom = salut c'est mou échec et màt sur vötrà ça vü $ £ % ù @ €
    
    nom2 = salut c'est mou échec et màt sur vÖtrà ça vÜ $ £ % ù @ €
    
    Pourquoi sur mon ordi la fonction strtolower n'interprête pas comme il faut les accents ?
     
Chargement...
Similar Threads - Convertir web UTF Forum Date
HTML5 convertir page web ISO en UTF-8 Développement d'un site Web ou d'une appli mobile 25 Juillet 2013
Convertir ses pages web en pdf pour traduction ou correction Développement d'un site Web ou d'une appli mobile 12 Juillet 2015
Convertir un site htm en wordpress Développement d'un site Web ou d'une appli mobile 1 Décembre 2019
Astuce RewriteMap : convertir un .dbm.pag en txt ? Débuter en référencement 8 Juillet 2019
Lien rompu pour convertir un profil en page Facebook ? Facebook 28 Décembre 2015
[Aide] convertir balise <iframe> en <object> Développement d'un site Web ou d'une appli mobile 10 Septembre 2015
convertir chaine en date Développement d'un site Web ou d'une appli mobile 16 Avril 2014
img src=blob: comment convertir en fichier? Développement d'un site Web ou d'une appli mobile 26 Juin 2013
convertir date décimal Développement d'un site Web ou d'une appli mobile 18 Mai 2013
Convertir input checkbox Développement d'un site Web ou d'une appli mobile 27 Avril 2013
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice