Bonjour, > Un HS, mais je ne m'explique pas le comportement de sed. > > Sur un fichier encodé en utf-8, je veux remplacer les espaces insécables > par de véritables espaces : > > sed -i 's/\xa0/\x20/g' fichier.sql
en UTF-8, un blanc non-sécable, ça utilise 2 octets (c2a0) http://www.fileformat.info/info/unicode/char/00a0/index.htm D'ailleurs: echo -n "### ###" > test hexdump test -C 00000000 23 23 23 c2 a0 23 23 23 |###..###| On vois bien qu'il y a 2 octets (évidemment il fallait taper Alt-Espace entre les caractère "#") Donc: sed -i 's/\xc2\xa0/ /g' test > Mais en réalité, l'espace insécable est bien remplacée, mais il y a un  > avant, et le fichier est encodé en latin1. Ce que tu as fait c'est de remplacer la séquence d'octet "c2a0" (qui est un blanc insécable) par la séquence "20a0". On se retrouve avec \x20 est effectivement un blanc "normal", précédé de l'octet "\xc2". Ton éditeur de texte se retrouve avec une séquence d'octets qui n'est pas valide en UTF-8 (un octet entre \xC2 et \xDF doit être suivi de deux octets compris entre \x80 et \xBF voir [2])... du coup, ton editeur continue d'essayer de détecter l'encodage, et choisi latin1, dans ton cas précis. Franklin [2] http://www.fileformat.info/info/unicode/utf8.htm -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.org/DebFrFrenchLists Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:" To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

