Problème caractères unicodes
Problème caractères unicodes
Bonsoir,
Je viens de me rendre compte que le contenu de ma table produits (base sqlite) contient des enregistrements formés par des caractères bizarres (en tout cas NON utf8). J'ai sélectionné le code UTF 8 et j'ai recompilé. Toujours le même résultat.
Exemple: au lieu de (caractère), c'est (caract) + une lettre bizarre +(re), tous les caractères accentués sont remplacés.
Une idée??
Merci
Je viens de me rendre compte que le contenu de ma table produits (base sqlite) contient des enregistrements formés par des caractères bizarres (en tout cas NON utf8). J'ai sélectionné le code UTF 8 et j'ai recompilé. Toujours le même résultat.
Exemple: au lieu de (caractère), c'est (caract) + une lettre bizarre +(re), tous les caractères accentués sont remplacés.
Une idée??
Merci
Win7 (x64) 64 bits Pb 5.72
Re: Problème caractères unicodes
Bonsoir omega, moi je décoche l'option "Activer le support Unicode" et ça fonctionne très bien !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème caractères unicodes
Support unicode ou pas dans les options de compilation je n'ai pas de souci avec les accents.
Omega pourrais tu tester ce code et dire si tu vois bien les accents ou pas. ? (D'autres peuvent faire également ce test. Merci.)Précisez également la version de Purebasic et l'OS. Merci.
Omega pourrais tu tester ce code et dire si tu vois bien les accents ou pas. ? (D'autres peuvent faire également ce test. Merci.)
Code : Tout sélectionner
Enumeration
#DataBase
EndEnumeration
UseSQLiteDatabase()
Global ReqSql.s
;Création d'une base de donnée en mémoire
OpenDatabase(#DataBase, ":memory:", "", "")
;Creation de la table produits (trés simplifié)
ReqSql = "CREATE TABLE Produits ("
ReqSql + "idauto INTEGER PRIMARY KEY," ;Identification auto
ReqSql + "nom TEXTE," ;Nom du produit
ReqSql + "pu INTEGER" ;Prix unitaire
ReqSql + ");"
DatabaseUpdate(#DataBase, ReqSql)
Debug DatabaseError()
;Ajout de deux produits
ReqSql = "INSERT INTO produits (nom, pu) values ("
ReqSql + Chr(34) + "Règle" + Chr(34)+Chr(44) ;Nom du produit
ReqSql + Chr(34) + 10 + Chr(34)+")" ;Montant
DatabaseUpdate(#Database, ReqSql)
ReqSql = "INSERT INTO produits (nom, pu) values ("
ReqSql + Chr(34) + "Poêle" + Chr(34)+Chr(44) ;Nom du produit
ReqSql + Chr(34) + 9 + Chr(34)+")" ;Montant
DatabaseUpdate(#Database, ReqSql)
;Liste des produits
ReqSql = "SELECT nom, pu FROM produits"
DatabaseQuery(#Database, ReqSql)
While NextDatabaseRow(#Database)
Debug "Produit : " + GetDatabaseString(#Database, 0) + " P.U. : " + Str(GetDatabaseLong(#Database, 1))
Wend
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Problème caractères unicodes
Bonjour
J'ai testé ton code falsam, voila le résultat:
J'ai testé ton code falsam, voila le résultat:
- Produit : Règle P.U. : 10
Produit : Poêle P.U. : 9
Win7 (x64) 64 bits Pb 5.72
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème caractères unicodes
Voila qui est étrange. Quelle version de Purebasic ? et quel systeme d'exploitation ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Problème caractères unicodes
Windows 10 x64 - PB x64 5.42 B3 LTS avec ou sans support unicode = OK
Windows XP Pro dans VM (VirtualBox 5) - PB 5.41 LTS avec ou sans support unicode = OK
Windows XP Pro dans VM (VirtualBox 5) - PB 5.41 LTS avec ou sans support unicode = OK
Code : Tout sélectionner
Produit : Règle P.U. : 10
Produit : Poêle P.U. : 9
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème caractères unicodes
Merci Marc56 pour ce test.
Oops j'ai oublié de remercier Spock pour son feedback
Oops j'ai oublié de remercier Spock pour son feedback

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Problème caractères unicodes
Pb4.32Voila qui est étrange. Quelle version de Purebasic ? et quel systeme d'exploitation ?
Win7
Win7 (x64) 64 bits Pb 5.72
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème caractères unicodes
Tu es certain de cette version ? Elle n'existe pas dans les archives de Purebasic.omega a écrit :Pb4.32
Pour info la version en cours est la version 5.40 LTS.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème caractères unicodes
Version de 2008. Je charge et j'essaye.omega a écrit :Pardon Pb4.20
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème caractères unicodes
Effectivement il y a un souci avec cette version 4.20.
Dans les options de compilation (Menu Compilateur -> Options du compilateur) tu coches Activé le support Unicode.
Le souci sera résolu.
Pense à passer à la version 5.40. Les mise à jours sont gratuites avec PureBasic
Dans les options de compilation (Menu Compilateur -> Options du compilateur) tu coches Activé le support Unicode.
Le souci sera résolu.
Pense à passer à la version 5.40. Les mise à jours sont gratuites avec PureBasic

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Problème caractères unicodes
J'ai coché l'option (activer la gestion unicode), et ça marche à présent.
Merci
Cependant, j'ai quelques questions et remarques sur ton code:
1. C'est la première fois que je vois ça (base de données en mémoire) mais où se trouve le nom de la base ?
Est ce que le nom est facultatif? Si par exemple je veux créer 2 bases de données en mémoire, comment les différencier dans ce cas?
2. Cette ligne de code n'a pas marché à mon niveau, il a fallu remplacer 10 par une chaîne "10" (la même chose pour le 9)
3. Comment localiser physiquement la base en mémoire ? en utilisant par exemple un visual sqlite commednt indiquer le chemin de la table à consulter?
Merci
Cependant, j'ai quelques questions et remarques sur ton code:
Code : Tout sélectionner
OpenDatabase(#DataBase, ":memory:", "", "")
1. C'est la première fois que je vois ça (base de données en mémoire) mais où se trouve le nom de la base ?
Est ce que le nom est facultatif? Si par exemple je veux créer 2 bases de données en mémoire, comment les différencier dans ce cas?
Code : Tout sélectionner
ReqSql + Chr(34) + 10 + Chr(34)+")" ;Montant
3. Comment localiser physiquement la base en mémoire ? en utilisant par exemple un visual sqlite commednt indiquer le chemin de la table à consulter?
Win7 (x64) 64 bits Pb 5.72
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème caractères unicodes
Bonne nouvelle.omega a écrit :J'ai coché l'option (activer la gestion unicode), et ça marche à présent.
Nul part dans cet exemple.omega a écrit : C'est la première fois que je vois ça (base de données en mémoire) mais oe trouve le nom de la base ?
Ouiomega a écrit :Est ce que le nom est facultatif?
Faut que je testeomega a écrit :Si par exemple je veux créer 2 bases de données en mémoire, comment les différencier dans ce cas?

.C'est ce que j'ai du faire avec la version 4.20 de PureBasic. Par contre c'est inutile avec la dernière version.falsam a écrit :Cette ligne de code n'a pas marché à mon niveau, il a fallu remplacer 10 par une chaîne "10" (la même chose pour le 9)
Pour moi ce n'est pas possible.omega a écrit :Comment localiser physiquement la base en mémoire ? en utilisant par exemple un visual sqlite commednt indiquer le chemin de la table à consulter?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Problème caractères unicodes
Deux bases de données SQLite en mémoires
Code : Tout sélectionner
Enumeration
#DataBase1
#Database2
EndEnumeration
UseSQLiteDatabase()
Global ReqSql.s
;- Création de la base de données 1 en mémoire
OpenDatabase(#DataBase1, ":memory:", "", "")
;Creation de la table produits (trés simplifié)
ReqSql = "CREATE TABLE Produits ("
ReqSql + "idauto INTEGER PRIMARY KEY," ;Identification auto
ReqSql + "nom TEXTE," ;Nom du produit
ReqSql + "pu INTEGER" ;Prix unitaire
ReqSql + ");"
DatabaseUpdate(#DataBase1, ReqSql)
;Ajout de deux produits
ReqSql = "INSERT INTO produits (nom, pu) values ("
ReqSql + Chr(34) + "Règle" + Chr(34)+Chr(44) ;Nom du produit
ReqSql + Chr(34) + 10 + Chr(34)+")" ;Montant
DatabaseUpdate(#Database1, ReqSql)
ReqSql = "INSERT INTO produits (nom, pu) values ("
ReqSql + Chr(34) + "Poêle" + Chr(34)+Chr(44) ;Nom du produit
ReqSql + Chr(34) + 9 + Chr(34)+")" ;Montant
DatabaseUpdate(#Database1, ReqSql)
;- Création de la base de données 2 en mémoire
OpenDatabase(#DataBase2, ":memory:", "", "")
;Creation de la table produits (trés simplifié)
ReqSql = "CREATE TABLE Produits ("
ReqSql + "idauto INTEGER PRIMARY KEY," ;Identification auto
ReqSql + "nom TEXTE," ;Nom du produit
ReqSql + "pu INTEGER" ;Prix unitaire
ReqSql + ");"
DatabaseUpdate(#DataBase2, ReqSql)
;Ajout de deux produits
ReqSql = "INSERT INTO produits (nom, pu) values ("
ReqSql + Chr(34) + "PureBasic" + Chr(34)+Chr(44) ;Nom du produit
ReqSql + Chr(34) + 79 + Chr(34)+")" ;Montant
DatabaseUpdate(#Database2, ReqSql)
ReqSql = "INSERT INTO produits (nom, pu) values ("
ReqSql + Chr(34) + "SpiderBasic" + Chr(34)+Chr(44) ;Nom du produit
ReqSql + Chr(34) + 49 + Chr(34)+")" ;Montant
DatabaseUpdate(#Database2, ReqSql)
;-Liste des produits base de donnée 1
ReqSql = "SELECT nom, pu FROM produits"
DatabaseQuery(#Database1, ReqSql)
Debug "Liste produits #database1"
While NextDatabaseRow(#Database1)
Debug "Produit : " + GetDatabaseString(#Database1, 0) + " P.U. : " + Str(GetDatabaseLong(#Database1, 1))
Wend
;-Liste des produits base de donnée 1
ReqSql = "SELECT nom, pu FROM produits"
DatabaseQuery(#Database2, ReqSql)
Debug "Liste produits #database2"
While NextDatabaseRow(#Database2)
Debug "Produit : " + GetDatabaseString(#Database2, 0) + " P.U. : " + Str(GetDatabaseLong(#Database2, 1))
Wend
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%