É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