Bonjour,
J’ai transféré un site SPIP ancien sur hebergeur LWS et j’ai un pb accents ,avec l’aide de l’IA j’ai essayé de solutionner ce pb mais pour l’instant la solution proposée est de supprimer les accents.
j’ai modifié mes dossier en utilisant UTF8.
Y a t il une autre solution?
Merci
Bonjour,
plus fort que l’IA, la recherche dans le forum ![]()
Plusieurs sujets en parle ici :
- [Résolu] Caractères accentués subitement non rendus correctement et plus aucun plugin actif
- UTF8 et caractères accentués
- [Résolu] spip_connect_db valeur par défaut du paramètre charset a changé ?
Est-ce qu’une de ces solutions fonctionne pour toi ?
Il existe une commande de spip-cli convert to utf8 également qui peut être utile si c’est une migration d’un vieux SPIP.
@cail_denis Est-ce dans les articles que tu rencontres ce problème et/ou dans les courriels de notifications ? (Perso c’est dans les courriels de notifications où les accents sont remplacés par des enchaînements de caractères bizarres)
Bonjour
Je viens de faire une expérience sur un site de dev :
J’ai remplacé 'utf8' par '' dans spip_connect, et effacé le cache.
Même problème qu’il y a quelques jours et signalé ici
Bon, ce n’est pas grave, mais ce que je ne comprends pas c’est pourquoi tous les plugins ont été désactivés !
Quel rapport entre les plugins et le jeu de caractère ?
Essaye avec utf-8, cf :
Non, c’est inutile, cela fonctionne actuellement sans tiret avec spip, ou alors le problème est ailleurs.
Ce que je voulais dire est que, dans la plupart des autres logiciels, le jeu de caractères est orthographié avec un tiret et que spip devrait peut-être l’accepter ainsi dans une prochaine version.
Pour donner des billes concernant ce dernier post, j’ai demandé à Claude (l’IA est idéale pour synthétiser ce genre d’info) … donc on peut dire que ça n’est pas aussi affirmé que ça et qu’à priori Spip n’y est pour rien, « utf8 » dans une fonction qui concerne la connexion à la base de données se doit de respecter ce que veut mySQL/mariaDB et il semble que ce soit bien « utf8 » (alias pour utf8mb3), même si effectivement partout ailleurs ce serait plutôt « utf-8 » …
================================
Oui, il existe une référence officielle : le registre des jeux de caractères de l’IANA (Character Sets registry). Le nom canonique y est UTF-8, avec le tiret. La RFC 2978 précise que ces noms sont insensibles à la casse, donc utf-8 et UTF-8 sont strictement équivalents dans tout ce qui suit les standards Internet (en-têtes HTTP, MIME, e-mail, XML, HTML). En revanche, utf8 sans tiret n’est pas un nom enregistré à l’IANA. Il est toléré par beaucoup de logiciels, mais ce n’est pas l’orthographe officielle.
Dans la pratique, chaque logiciel a ses propres conventions :
- HTML / navigateurs : le standard WHATWG Encoding accepte
utf-8,utf8etunicode-1-1-utf-8comme alias, mais<meta charset="utf-8">reste la forme recommandée. - PHP :
mbstring,htmlspecialchars()eticonvattendentUTF-8.mbstringaccepte aussiutf8, mais d’autres fonctions peuvent le refuser, doncUTF-8est le choix le plus sûr. - MySQL / MariaDB : c’est le piège classique. Le nom est
utf8, sans tiret, et il désigne en réalitéutf8mb3, limité à 3 octets (pas d’emojis ni de certains caractères CJK). Pour le vrai UTF-8 complet, il faut utiliserutf8mb4, avec une collationutf8mb4_unicode_ciouutf8mb4_0900_ai_ciselon la version. Dans une chaîne PDO, on écritcharset=utf8mb4. - PostgreSQL : le nom canonique est
UTF8, etUTF-8est accepté comme alias. - Locales Linux/Debian : on écrit
fr_FR.UTF-8dans/etc/locale.gen, maislocale -aaffichefr_FR.utf8, car glibc normalise le nom (minuscules, sans tiret). - Apache :
AddDefaultCharset UTF-8. - Python :
utf-8,utf8,UTF8sont tous acceptés, et le nom normalisé estutf-8.
En résumé, le nom officiel est UTF-8, et sa casse n’a pas d’importance. Utilisez-le partout où c’est possible, sauf dans MySQL/MariaDB, où la bonne valeur est utf8mb4, et dans PostgreSQL, où UTF8 est la forme native.
Il faut savoir quel encodage est utilisé par la base de données du site (à voir dans phpmyadmin par exemple) et compléter le fichier connect.php en fonction.
Si la base est MySQL et l’encodage est utf8mb4_general_ci (pour avoir des emojis), il faut ajouter « utf8mb4 » en dernier paramètre de spip_connect_db.