[Basic] Lire/écrire un texte encodé

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur : Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

[Basic] Lire/écrire un texte encodé

Message par bm92 »

Problème
Écrire ou lire un fichier texte utilisant un certain encodage. Par exemple un texte encodé en ISO-8859-1, ou en IBM-850, ou en UTF-8.

Solution
Utiliser le service de l'API : TextInputStream et TextOutputStream

Le document ci-dessous donne un exemple de macros pour lire et écrire dans un encodage donné.
https://forum.openoffice.org/fr/ci-join ... 032738.odt
Il contient aussi une méthode pour remplacer les caractères accentués d'un texte.

Code : Tout sélectionner

Sub ReadEncodedText
Dim myTextFile As Object, sf As Object, fileStream As Object
Dim aLineOfText As String, myFilePath As String

myFilePath = convertToURL("C:\Docs OpenOffice\monTexte.txt")
sf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
On Error Goto fichierKO
fileStream = sf.openFileRead(myFilePath)
myTextFile = createUnoService("com.sun.star.io.TextInputStream")
myTextFile.InputStream = fileStream
myTextFile.Encoding = "ISO-8859-15"
'myTextFile.Encoding = "IBM850"

Do while not myTextFile.IsEOF
  aLineOfText = myTextFile.readLine
  MsgBox(aLineOfText)
Loop

fileStream.closeInput
myTextFile.closeInput
On Error Goto 0
Exit Sub

FichierKO:
Resume FichierKO2
FichierKO2:
On Error Resume Next
MsgBox("File read error !", 16)
fileStream.closeInput
myTextFile.closeInput
On Error Goto 0
End Sub

Code : Tout sélectionner

Sub WriteEncodedText
Dim myTextFile As Object, sf As Object, fileStream As Object
Dim myFilePath As String

myFilePath = convertToURL("C:\Docs OpenOffice\monTexte.txt")
sf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
On Error Goto fichierKO
fileStream = sf.openFileWrite(myFilePath)
myTextFile = createUnoService("com.sun.star.io.TextOutputStream")
myTextFile.OutputStream = fileStream
myTextFile.Encoding = "ISO-8859-15"
'myTextFile.Encoding = "IBM850" ' encodage DOS
myTextFile.writeString("À Lætitia, tous nos vœux " & chr(10))
myTextFile.writeString("Ø å Å Æ Œ " & chr(10))

fileStream.closeOutput
myTextFile.closeOutput
On Error Goto 0
Exit Sub

FichierKO:
Resume FichierKO2
FichierKO2:
On Error Resume Next
MsgBox("File write error !", 16)
fileStream.closeOutput
myTextFile.closeOutput
On Error Goto 0
End Sub