[5.1.3] Encodage et fin de ligne de pluxml
Bonjour tout le monde,
Je débute sous pluxml, et je suis vraiment ravi par ce CMS.
Avant de vous embêter, j'en profite pour remercier toutes les personnes qui travaillent dessus et les encourager à continuer
Ce n'est pas vraiment un bug, parce que ça n'a pas d'incidence directe sur le blog (dans mon cas), mais plutôt un constat. En regardant les fichiers de pluxml, j'ai remarqué que d'une part certains fichiers étaient encodés en utf-8 et d'autres en iso-8859-15, et que d'autre part, certains fichiers avaient une fin de ligne de type windows (CRLF) et d'autres une fin de ligne de type linux (LF). Ce serait bien d'harmoniser tout ça pour éviter certains bugs, non ?
Si certains sont intéressés, voici un petit script bash pour transformer tous les fichiers en fichiers utf-8 avec une fin de ligne de type LF. Il faut juste préciser le nom du dossier pluxml :
Ça fonctionne sans problème chez moi, par contre je conseille de le tester sur une copie de votre site ou de faire une sauvegarde avant
Je peux aussi directement passer les fichiers corrigés
@tte
Je débute sous pluxml, et je suis vraiment ravi par ce CMS.
Avant de vous embêter, j'en profite pour remercier toutes les personnes qui travaillent dessus et les encourager à continuer
Ce n'est pas vraiment un bug, parce que ça n'a pas d'incidence directe sur le blog (dans mon cas), mais plutôt un constat. En regardant les fichiers de pluxml, j'ai remarqué que d'une part certains fichiers étaient encodés en utf-8 et d'autres en iso-8859-15, et que d'autre part, certains fichiers avaient une fin de ligne de type windows (CRLF) et d'autres une fin de ligne de type linux (LF). Ce serait bien d'harmoniser tout ça pour éviter certains bugs, non ?
Si certains sont intéressés, voici un petit script bash pour transformer tous les fichiers en fichiers utf-8 avec une fin de ligne de type LF. Il faut juste préciser le nom du dossier pluxml :
#!/bin/bash
rep='/home/www/pluxml' # Chemin du site
find $rep -type f -print0 | sort -z > liste.txt
sed -i -e "s!$rep/! !g" liste.txt
liste="$(cat liste.txt)"
for f in $liste; do
if [ -f $f ]; then
# Changement de l'encodage des caractères de l'iso-8859-1 vers l'utf-8
file -i $f | grep -v 'utf-8' | grep -v 'us-ascii' | grep -v 'binary'
if [ $? -eq 0 ]; then
iconv -f ISO-8859-15 -t UTF8 $f > fichier_converti.txt
mv -v fichier_converti.txt $f
fi
# Changement de fin de ligne de DOS vers Linux
utrac -i $f 2>&1 | grep 'EOL' | grep 'CRLF'
if [ $? -eq 0 ]; then
echo $f
sed -i -e 's/^M$//' $f
fi
fi
done
rm liste.txt
Le script nécessite iconv pour convertir l'encodage et utrac pour convertir les fins de ligne. Attention le ^M (à la ligne sed) est obtenu par les touches "CTRL-V" + "CTRL-M". Il faut penser à le changer avant d'exécuter le script. Plus d'informations ici. Enfin, si vous exécutez le code avec les droits root, ça peut poser un pb de droits des fichiers après.Ça fonctionne sans problème chez moi, par contre je conseille de le tester sur une copie de votre site ou de faire une sauvegarde avant
Je peux aussi directement passer les fichiers corrigés
@tte
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Effectivement on trouve de l'ansi, de l'utf8, et de l'utf8 sans bom.
Dans la 5.1.5 tous les fichiers ont été réencodés en utf8-sans bom
On fera de même avec les fichiers langues (ce qui facilitera l'écriture, plus besoin de mettre les équivalents html des caractères accentués).
Pour les retours chariots on vérifiera si c'est ok.
Merci pour avoir remonté le probleme
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)