Envoyé par : jérôme
Date : 05/07/2009 10:26
Bonjour à tous, après maintes recherches infructueuses, je m'en remets encore à ce forum.
J'importe un fichier xml encodé en iso-8859-15 (qui supporte le €) dans ma base sqlite. Ca marche. En revanche, impossible de d'afficher le sigle € dans mon tree.
Que faut-il donc faire ?
A votre bon coeur messieurs dames...
Envoyé par : thefab
Date : 05/07/2009 19:46
Encoder en UTF-8 !! Je ne sais pas si SQLite supporte autre chose que ISO-8859-1 et UTF-8 ? Avec UTF-8 aucun soucis pour XUL, SQLite,...
Envoyé par : jérôme
Date : 06/07/2009 10:47
Salut Fabrice, merci de me répondre. Je vais exposé mon souci sans passer par l'importation du fichier xml. J'ai une fonction qui insère dans sqlite 3.
function insertionEuro() { var mDBConn = connexionBase("marchandises"); var sql = 'INSERT INTO marchandises VALUES (null,"test à 16€","16","5.5","restaurant")'; mDBConn.executeSimpleSQL(sql); }
Tout s'insère dans la base sans problème. Cependant, lors de l'affichage dans le template dont la requete est tout simplement "select * from marchandises order by appellation asc" les caractères accentués ne passent pas et ça affiche un carré noir avec un point d'interrogation dedans...
Envoyé par : thefab
Date : 06/07/2009 13:36
Tous tes fichiers sont bien encodés en UTF-8 ? Le fichier XUL et la base de données SQLite (PRAGMA encoding; pour afficher l'encodage actuel de la base). Le problème vient certainement du fait que le fichier JS n'est pas en UTF-8 et donc ça ne passe pas lors de l'insertion.
Essaye d'exécuter ton un SQL qui vient de ta fenêtre XUL (qui elle est en UTF-8!!)
var sql = document.getElementById('sql-textbox'); mDBConn.executeSimpleSQL(sql);
Ou essaye de mettre aussi le JavaScript en UTF-8
Sinon il y a aussi la possibilité de changer l'encodage avec nsIUTF8ConverterService.
Voir aussi: http://xulfr.org/forums/read.php?1,11446
Envoyé par : jérôme
Date : 06/07/2009 14:07
Resalut Fabrice.
Alors, d'abord, je ne sais pas utiliser la commande pragma avec sqlite... Pour les fichiers javascript, j'ai mis <script type="application/x-javascript" src="javascript/interface.js" charset="utf-8"> mais ça ne change rien.
LA fonction
function convertToUTF8(str) { var encoder = Components.classes["@mozilla.org/intl/utf8converterservice;1"] .createInstance(Components.interfaces.nsIUTF8ConverterService); return encoder.convertStringToUTF8(str,"ISO-8859-1",true); }
ne donne rien... ou presque puisque le euro est transformé en un autre caractère(test à 16¬)... Le "à" passe bien lui... Même en mettant ma fonction dans la page xul encodée en utf-8, ça me met des caractères illisibles... Je vois pas... Merci de ton aide en tous cas:)
Envoyé par : thefab
Date : 06/07/2009 14:17
PRAGMA encoding;
En ligne de commande (Windows):
DOS> sqlite3.exe mabase.sqlite sqlite> PRAGMA encoding; UTF-8
Ou avec XUL exécuter comme une requête SQL standard ;-)
<script type="application/x-javascript" src="javascript/interface.js" charset="utf-8">
Ca ne suffit pas de simplement dire que c'est en UTF-8 !!! il faut que ton fichier soit REELEMENT en UTF-8 !!! Quel OS, quel editeur ?
Envoyé par : jérôme
Date : 06/07/2009 15:19
j'utilise la dll de xulrunner sqlite3.dll, j'ai pas d'exe. L'os c'est vista et l'editeur dreamweaver mx2004
Envoyé par : thefab
Date : 06/07/2009 15:55
SQLite (exe): Possible de le téléchager ;-)
Dreamweaver:
Modifier > Propriétés de la page > Titre/codage > Codage: Unicode (UTF-8)
Pour les fichiers XUL tu peux laisser la signature BOM si tu veux mais pas pour le JS (je crois)
Envoyé par : jérôme
Date : 06/07/2009 16:10
T'as raison j'ai téléchargé sqlite3.exe et il m'a répondu que ma base était bien en utf-8... Ma page xul est elle aussi bel et bien en utf-8.
J'ai réussi à afficher correctement les caractères lorsque j'ai importé un fichier xml encodé en iso-8859-1 et en utilisant la fonction parseFile :
function parse_file(filepath,encoding) { var aFile = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); aFile.initWithPath(filepath); if (aFile.exists()) { var aStream = Components.classes["@mozilla.org/network/file-input-stream;1"] .createInstance(Components.interfaces.nsIFileInputStream); aStream.init(aFile, 0x01, 0444, null); var domParser = Components.classes["@mozilla.org/xmlextras/domparser;1"] .getService(Components.interfaces.nsIDOMParser); var root = domParser.parseFromStream(aStream,encoding,aFile.fileSize,"text/xml"); aStream.close(); return root; } }
pour le paramètre, j'ai mis "iso-8859-1" et là ça a marché. Impossible cependant en voulant insérer directement du texte avec sqlite et executeStep()...
Envoyé par : thefab
Date : 06/07/2009 16:31
Ton fichier JS est aussi en UTF-8 ??
nsIUTF8ConverterService.convertStringToUTF8() fonctionne chez moi (dernier paramètre à false) ???
Bonne idée le parseFile ;-)
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.