Base MySQL UTF8MB4

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
fd
Messages : 70
Inscription : mar. 15/mars/2005 21:41
Localisation : Savoie

Base MySQL UTF8MB4

Message par fd »

Bonjour,
Je souhaite écrire en local et en purebasic un éditeur de données pour un site web (pour gagner du temps par rapport à la saisie sur le web).
MySQL code la base en UTF8MB4. Purebasic gère de l'UTF8.

Mon problème est le suivant :
J'affiche des données avec des caractères étranges avec mon programmes sous purebasic.
Si je modifie et enregistre, lorsque je reprends les données en php c'est maintenant illisible sur le site web.

Je ne trouve pas comment expliquer à purebasic que les données sont en utf8mb4.

Merci de vos lumières
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Base MySQL UTF8MB4

Message par Marc56 »

Qu'est ce que ça donne si tu lis ou saisis dans le shell mysql (mysql.exe)?
(en ayant au préalable mis le shell en Utf-8 (chcp 65001 si fenêtre Windows avant de lancer mysql))
Dans une autre application (ex: https://www.heidisql.com/)

Tu as surement déjà vérifié, mais au cas ou:
- MySQL < 5.50 était UTF8MB3, d'où les caractères comme les smiley peuvent être bizarres
- Les pages PHP doivent avoir un entête spécial pour afficher de l'Utf-8
- L'encodage des bases de données peut concerner Base, Table, Colonne

PB gérant l'Utf-8 jusqu'à 4 octets (donc bien MB4), créé une mini application en mettant un caractère (codé sur 4 octets) et teste l'ouverture avec un éditeur (ou le shell) puis en PHP.
Utilises bien-sur SetDataBaseString()

:wink:
Avatar de l’utilisateur
Naheulf
Messages : 191
Inscription : dim. 10/mars/2013 22:22
Localisation : France

Re: Base MySQL UTF8MB4

Message par Naheulf »

Vérifie aussi si le serveur php renvoie l'entête html qui définie l'encodage du fichier. (C'est prioritaire sur l'encodage renseigné dans le fichier html).
fd
Messages : 70
Inscription : mar. 15/mars/2005 21:41
Localisation : Savoie

Re: Base MySQL UTF8MB4

Message par fd »

Bonsoir,

J'ai vérifié.
J'utilise DatabaseUpdate(#MySql_0, SQL) avec ma chaine SQL contenant les SET libelle = '+MonLibellé+' ...

Avec heidisql, la base contient une chaine correctement écrite (à partir du php). Dans les préférences, je retrouve le codage utf8mb4.
Lorsque je reprends ma chaine dans l'appli purebasic, j'ai des losanges noirs sur les caractères accentués.
Je corrige la chaine, je sauvegarde dans la base.
Avec heidisql, la base contient une chaine avec des smileys.
Je charge la chaine dans l'appli purebasic, elle est correctement écrite. Mais dans l'appli web (php), elle contient les smileys ...

Je ne comprends rien ...
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: Base MySQL UTF8MB4

Message par Marc56 »

Je viens de faire un test dans les deux sens et avec les entêtes: effectivement avec UTF8MB4 les saisies ou lecture PB effectuées dans MySQL (ici MariaDB 10.4), ne fonctionnent pas avec les accents et autres caractères quand on lit/écrit sous PHP ou autre gestionnaire.
(taper par exemple Alt+1 (pavé) pour avoir le smiley standard ☺)

idem en utilisant la dernière lib (UseMySQLDatabase("libmariadb.dll"))

:|
Répondre