Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


Bonjour,

Le 29/08/2018 à 23:59, Cédric Giraud a écrit :
La macro parse les lignes et les écrit à la suite dans un fichier .json
propre à chaque langue en créant la bonne indentation et le bon formatage
du langage.

le problème d'encodage vient de là :


open Fichier for output as #1
[...]
print #1, Resultat
close #1

Vous utilisez les primitives standard du LibO Basic pour écrire dans le fichier. De fait, vous n'avez pas accès à la méthode d'encodage des caractères.

Pour avoir la pleine maîtrise de cet aspect, je vous conseille d'utiliser l'API relative aux flux.

Dans ce cadre, vous ferez appel à deux services :
-- com.sun.star.ucb.SimpleFileAccess
qui fournit l'accès au fichier
-- com.sun.star.io.TextOutputStream
qui permet l'accès en écriture à un fichier texte (comme son nom l'indique)

Ce dernier service fournit une méthode setEncoding() qui vous permet de choisir l'encodage voulu. Les valeurs possibles figurent dans la page web https://www.iana.org/assignments/character-sets/character-sets.xhtml
(colonne Name)

-> Sachez cependant que UTF-8 est l'encodage par défaut proposé par TextOutputStream.

Par exemple, pour écrire un fichier texte encodé en UTF-8 via l'API flux en Basic, vous auriez un code comme celui-ci :

8< ----------------------------------------------------------------

Dim oSFA As Object
Dim oOutText As Object
Dim FichierURL As String

oSFA = createUNOService("com.sun.star.ucb.SimpleFileAccess")
FichierURL = ConvertToURL("C:\chemin\vers\MonFichier.txt")
oOutText = createUNOService("com.sun.star.io.TextOutputStream")
oOutText.setOutputStream(oSFA.openFileWrite(FichierURL))
'écrire (les délimiteurs de ligne doivent être spécifiés)
'[ici CRLF (Windows)]
oOutText.WriteString("Hello World" & Chr(13) & Chr(10))
oOutText.WriteString("Ligne 2" & Chr(13) & Chr(10))
'vider les tampons et fermer
oOutText.flush
oOutText.closeOutput()

--------------------------------------------------------------- >8


Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux


--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.