problème accents

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 :smiley:

Plusieurs sujets en parle ici :

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, utf8 et unicode-1-1-utf-8 comme alias, mais <meta charset="utf-8"> reste la forme recommandée.
  • PHP : mbstring, htmlspecialchars() et iconv attendent UTF-8. mbstring accepte aussi utf8, mais d’autres fonctions peuvent le refuser, donc UTF-8 est 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 utiliser utf8mb4, avec une collation utf8mb4_unicode_ci ou utf8mb4_0900_ai_ci selon la version. Dans une chaîne PDO, on écrit charset=utf8mb4.
  • PostgreSQL : le nom canonique est UTF8, et UTF-8 est accepté comme alias.
  • Locales Linux/Debian : on écrit fr_FR.UTF-8 dans /etc/locale.gen, mais locale -a affiche fr_FR.utf8, car glibc normalise le nom (minuscules, sans tiret).
  • Apache : AddDefaultCharset UTF-8.
  • Python : utf-8, utf8, UTF8 sont tous acceptés, et le nom normalisé est utf-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.

1 « J'aime »

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.