Forum Programmation.autre Comment faire pour diff ignore les problèmes d'encodages ?

Posté par  . Licence CC By‑SA.
Étiquettes :
0
30
oct.
2015

Bonjour à tous,

je suis en train de modifier certaines parties d'un projet en PHP, et la première chose que j'ai faite, c'est de transformer tous les documents de ISO-8859-1 vers UTF-8, à grands coups de "iconv".

Ensuite j'ai attaqué les corrections de codes proprement dites, et maintenant, je voudrais fournir au programmeur original mes modifications. Sauf que le fichier produit par "diff" est complètement pollué par les soucis d'accents, et quasi inutilisable (le mainteneur original ne souhaite pas passer à UTF-8 pour le moment).

Comment faire pour que diff passe outre les problèmes d'encodages ?

Merci d'avance,

  • # iconv encore

    Posté par  . Évalué à 2.

    Bonjour,

    As tu essayé de comparer le code que tu as corrigé avec le code original, mais converti par iconv ?
    Sinon, peux tu -avant comparaison- repasser ton code en ISO-8859-1 toujours à l'aide d'iconv ?

    • [^] # Re: iconv encore

      Posté par  . Évalué à 1.

      La première idée me semble intéressante, même si c'est plus un "contournement" qu'une solution.

      Pour la 2ème, appliquer un script dans un sens puis dans l'autre à chaque fois que je vais vouloir envoyer une modif me semble grandement source d'erreurs.

      Donc, pas encore une solution, mais merci pour la 1ere idée.

  • # facile...

    Posté par  . Évalué à 2. Dernière modification le 30 octobre 2015 à 11:29.

    Projet A.1 -> iconv -> Projet A.2
    cloner A.2 vers projet B.1
    travailler sur B.1

    faire le diff entre A.2 et B.1 (donc dans le meme encodage, UTF8)

    si le patch interesse le dev de projet A.1, il fera un iconv du patch pour l'appliquer chez lui en ISO8859

    • [^] # Re: facile...

      Posté par  . Évalué à 1.

      Oui, ca correspond à la première idée du post précédent. Ca marche, mais on contourne le problème et on ne répond pas à la question !

      • [^] # Re: facile...

        Posté par  (site web personnel) . Évalué à 1.

        Tout simplement parce qu'il n'y a pas de solution magiques, un "é" en ascii et un "é" en UTF-8 sont des caractères bien différents.

        Pour faire ça de façon simple tu peut importer le projet original dans un git après conversion UTF-8 et passe les "git diff" automatiquement dans iconv pour les convertir en ISO ou tu travail en ISO comme le dev original et tu fait en sorte de preparer la conversion u8 avec lui

  • # tout passer en utf-8?

    Posté par  (site web personnel) . Évalué à 4.

    Pourquoi ne pas en profiter pour passer ton projet entièrement et définitivement en utf-8?
    Comme ça, plus aucun problèmes d'encodage…

    utf-8 est quand même largement supporté par tous les systèmes d'exploitation récents.

    Il y a peut être des contraintes qui empêchent de passer le projet en utf-8, mais c'est dommage de se donner plus de travail pour un encodage qui devient désuet.

    • [^] # Re: tout passer en utf-8?

      Posté par  (site web personnel) . Évalué à 4.

      Ça me rappelle avec émotion le jour où l'on a décidé de migrer nos projets en UTF-8.

      Puis les mois de douleurs qui ont suivi quand il a fallu reporter les nouvelles corrections dans les anciennes branches…

    • [^] # Re: tout passer en utf-8?

      Posté par  . Évalué à 1.

      Mais c'est bien ce que je fais !!! Sauf qu'à la base, ce n'est pas mon code !

      Mais comme c'est du GPL, et que mes corrections peuvent servir à d'autres, j'estime que redonner mes modifications est le minimum.

      • [^] # Re: tout passer en utf-8?

        Posté par  . Évalué à 3.

        toi tu a fais un travail de fou en convertissant le projet en UTF8
        ben tu fournis ton diff UTF8 au developpeur original

        s'il est interessé, il le convertira en ISO pour l'integrer à son projet.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.