web-dev-qa-db-fra.com

Conversion ANSI en UTF-8 en shell

Je fais un script d'analyse (1 csv à 3 csv) et j'ai un problème. Je suis français donc dans ma langue j'ai des lettres comme: é è à ....

Un client m'a envoyé un fichier csv que Linux reconnaît comme "unknown-8bit" (ansi je suppose).

Dans mon script, j'écris 3 nouveaux fichiers csv. Mais ViM les crée en ISO latin1 car il est proche de ce qu'il a dans l'entrée, mais mon é,è,à... sont brisé. J'ai besoin d'UTF-8.

J'ai donc essayé de convertir le premier csv ANSI en UTF-8:

iconv -f "windows-1252" -t "UTF-8" import.csv -o import.csv

Le problème est que cela casse mon CSV. Il est maintenant sur une seule ligne. Mais mes caractères spéciaux sont ok. Existe-t-il un moyen de convertir ANSI en UTF-8 et de conserver mes lignes?

11
Neringan

Mettez la sortie dans un autre fichier. N'écrasez pas l'ancien.

iconv -f "windows-1252" -t "UTF-8" import.csv -o new_import.csv

iconv échoue lors de la lecture et de l'écriture dans le même fichier.

28
Grzegorz Żur