Forums : Template et RDF

Aller à la discussion :  Plus récente Plus ancienne

Aller à la page :  1 2

# [résolu]templates sqlite et sigle €

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...

# Re: templates sqlite et sigle €

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,...

# Re: templates sqlite et sigle €

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...

# Re: templates sqlite et sigle €

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

# Re: templates sqlite et sigle €

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

# Re: templates sqlite et sigle €

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 ?

# Re: templates sqlite et sigle €

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

# Re: templates sqlite et sigle €

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)

# Re: templates sqlite et sigle €

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()...

# Re: templates sqlite et sigle €

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 ;-)

Aller à la page :  1 2

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.