Encodage JSON du payload Whatsapp pour supporter de l’UTF-8

Les messages whatsapp sont très volumineux comme déjà indiqué dans cet article Prise en charge des messages volumineux whatsapp. Il se trouve que quand on doit stocker cette chaine reçue en base, certains caractères unicode ne sont pas correctement enregistrés, notamment les émoji et les caractères accentués. La solution à été d’encoder les caractères en utilisant JSON_UNESCAPED_UNICODE.
Par exemple, si notre objet reçu est stocké dans la variable $input, alors l’encodage avant insertion dans la base de données se fait en encodant l’objet ainsi :
json_encode($input,JSON_UNESCAPED_UNICODE);
  La requête complète d’insertion serait par exemple ainsi  en PHP :
$str = json_encode($input,JSON_UNESCAPED_UNICODE);
INSERT INTO table_name (fullstring) VALUES (‘$str’);
Ceci permet de solutionner le probleme d’encodage des chaines unicode sans aller restructurer la base de données toute entière. Il faut rappeler que la colonne table_name est restée en type mediumtext pour supporter jusqu’à 16,777,215 de caractères, soit environ 16 MB de caractères.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.