[Encodage ]Convertir dbf ISO-8859-1 -----> UTF8

Bonjour,
je me permet de demander de l’aide car je n’arrive pas à trouver la bonne solution/syntaxe.
j’ai des fichiers .dbf dont certains champs sont encoder en ISO-8859-1 or je voudrai les transformer en UTF-8 ?
j’ai trouvé sur ce même forum une réponse mais elle ne fonctionne pas ! Aucun résultat ne s’affiche ?

Je travail sous l’OS Ubuntu 18.04
et version de soffice : 6.0.7.3
le problème pourrai venir de ma version un peu agée…

D’avance merci pour vos tuyaux/
Bonne journée

Bonsoir,
Comme personne ne se lance… sauf erreur de ma part, le format dbf est un format texte, il peut donc s’ouvrir avec n’importe quel éditeur de texte basique : kwrite, leafpad, gedit… normalement, il donne directement la possibilité de l’ouvrir dans le format voulu
autrement dans un terminal :
iconv -f ISO_8859-1 -t UTF-8 base.dbf
Gérard

Bonjour,
merci pour votre réponse, j’ai effectué des essaies avec “iconv” la sortie standard du shell renvoie le bon encodage par contre impossible d’enregistrer en dbf ou csv…
je continue de chercher.
Bonne journée

je n’avais pas vu qu’il y avait des réponses…
pour l’enregistrement, il suffit d’envoyer la sortie dans un fichier donc
iconv -f ISO_8859-1 -t UTF-8 base.dbf > fichier.dbf
reste à savoir comment il s’ouvrira après… si dbf n’accepte pas l’utf8

DBF est un très vieux format qui ne supporte pas l’UTF-8 tout simplement.

Bonjour,
Merci d’avoir pris le temps de lire mon message.
Le format DBF est un vieux format mais encore largement utilisé dans le monde de la géomatique (SIG) notamment au travers du format shape.
Pour l’utiliser au quotidien, il est possible d’encoder les caractères avec de l’UTF-8.
Ma piste :
1/ Transformer mon dbf en csv
2/ récupérer l’encodage utilisé avec la commande file mon_fichier.csv.
3/ Encoder en UTF8 le csv.
4/Convertir le csv en dbf.

Si vous pouviez m’aider pour convertir le dbf en csv et inversement.
D’avance merci
Dd

Installer l’extension ExportCSV
https://forum.openoffice.org/fr/forum/viewtopic.php?f=18&t=49582
Ouvrir le .dbf avec Base et l’exporter en CSV

il n’y a pas besoin d’extension pour cela, enregistrer sous et choisr csv, les options seront proposées

Ce format n’est pas proposé dans Base qui ne sait enregistrer qu’en .odb.

ce n’est pas base qui ouvre dbf mais calc qui lui sait enregistrer en dbf ou csv

Relire ma réponse précédente, moi, je préconise l’usage de Base pour l’opération.

bonjour voici un second lien
Encoder des fichiers ISO-8859-1 en UTF-8 sous Ubuntu | Maxime Huran

Merci à tous pour vos pistes,
j’ai essayé toutes vos solutions mais le format dbf est compliqué et capricieux à manipuler, c’est un fichier binaire…
valioud : je souhaite trouver une solution en CLI pour que je puisse l’intégrer à un script bash
pierrelouis1: quand j’éxécute la commande file mon_fichier.dbf il me renvoie :
amd 29k coff prebar executable
fgland : la commande modifie le fichier et toutes les données sont modifiés

je vous ai mis un fichier en piece jointe, comme je ne pouvais pas téléverser un dbf j’ai remplacer l’extension par ods. Donc pour ceux qui voudront comprendre ma problématique et manipuler un fichier dbf, il faut changer l’extension .odf en .dbf.

Une fois le changement d’extension fait, vous pouvez l’ouvrir depuis Calc.

Je continue mes recherches
D’ici là je vous souhaites de bonne et belle fête de fin d’années !

windows_1252_to_UTF8.ods (1.2 KB)

À l’ouverture du dbf, calc demande quel encodage utiliser et propose iso-8859-1, le fichier avec les bons caractères.
Le réenregistrer en dbase pose de fait problème

Erreur lors de l'enregistrement du document windows_1252_to_UTF8:
Erreur d'écriture.
La colonne "SURF_HA" a été définie avec le type "Décimal", la longueur maximum est de 19 caractères (avec 15 décimales).

La valeur spécifiée "5500.000000000000000" est plus longue que le nombre de chiffres autorisé. at /home/tdf/lode/jenkins/workspace/lo_gerrit/tb/src_master/connectivity/source/commontools/dbexception.cxx:413

ce sont les 0 non significatifs qui posent problème qui ne sont d’ailleurs qu’une valeur d’affichage puisque la valeur réelle n’en a pas, ils sont perdus en csv

Il faut passer la valeur de l’entête D qui défini le format en surf_ha,N,24,14 pour que ça passe.
Est-ce admissible pour vous ?
windowsUTF8.dbf.odb (288 Bytes)
supprimer le odb pour l’ouverture

On peut convertir le dbf en csv avec la commande
soffice --convert-to csv windows_1252_to_UTF8.dbf test.csv mais l’encodage ne suit pas ! Si on trouve, ce sera ‘scriptable’

Bonsoir,
Je tenterais d’ouvrir le CSV avec Notepad++ et demander l’encodage UTF-8.
Mais je ne pense pas que ce soit “scriptable”. Quoique ? Il y a des macros dans Notepad++

A plus,
JM

le problème est d’abord de sortir le csv en ligne de commande ! puis de savoir si les 15 0 sont nécessaires.
Une fois le csv créé, on pourra modifier le format de cellule avec sed et remettre en dbf avec libreoffice en cli

Bonjour,
merci pour vos suggestions,
[fgland]: le fichier transmis s’ouvre correctement et les accents sont bien interprétés.
j’ai besoin de transformer mes dbf de l’encodage windows 1252 vers UTF-8 pour les envoyer dans postgresql et s’il y a un caractères non recconu Postgres ne l’importe pas en base.
Effectivement je peux le faire à la main, mais l’idée étant d’automatiser cette procédure via un scripting bash.
En attendant passez de bonnes fêtes !

Et PostgreSQL ne propose aucun outil pour importer du .dbf ?
C’est sûrement par là qu’il faut chercher plutôt que de faire des moulinettes entre Calc et Base.

je n’ai pas trouvé de ligne de commande correcte avec soffice, soit l’encodage n’est pas bon, soit la première ligne est corrompue.
La conversion des dbf vers csv est beaucoup plus rapide en python et l’encodage est bon mais encore un problème sur la première ligne ou les paramètres disparaissent mais je garde espoir !

Bonjour à tous et mes meilleurs voeux !
le sujet est complexe et je n’arrive pas à trouver une méthode automatique alors je vais m’orienter vers une manipulation manuelle. Un grand merci à vous pour toutes vos pistes !
Bonne semaine à tous