Jean-Michel OLTRA a écrit, samedi 6 décembre 2008, à 12:17 : > Bonjour,
bonsoir, > 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 Comme te l'a dit Sylvain, tu ne remplaces que le second octet de la paire codant l'espace insécable en UTF-8. > 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. Ou tout autre codage compatible... > Si le fichier est en latin1 avant la substitution, l'espace est > remplacée, et le fichier est converti en utf-8, ce que je trouve normal > vu que le terminal l'est également (peut-être qu'il n'y a pas de > rapport). Si ton terminal est en UTF-8, tu aurais dû taper l'espace insécable dans la substitution... En complément à ceux de Sylvain, quelques essais en environnement latin1 : ~ $ cat texte ascii pur sucre espace normal espace insecable (sans accent ;) çédille latin1 ~ $ recode ..utf8 <texte >texte_utf8 ~ $ sed -i -e 's/latin1/UTF-8/' texte_utf8 ~ $ diff texte texte_utf8 3,4c3,4 < espace insecable (sans accent ;) < çédille latin1 --- > espace insecable (sans accent ;) > çédille UTF-8 # remplacer l'octet : ~ $ sed -e 's/\xa0/_/g' texte texte_utf8 ascii pur sucre espace normal espace_insecable (sans accent ;) çédille latin1 ascii pur sucre espace normal espaceÂ_insecable (sans accent ;) çédille UTF-8 # Remplacer la paire UTF-8 # (on pourrait taper  au lieu de \xc2 ...) ~ $ sed -e 's/\xc2\xa0/_/g' texte texte_utf8 ascii pur sucre espace normal espace insecable (sans accent ;) çédille latin1 ascii pur sucre espace normal espace_insecable (sans accent ;) çédille UTF-8 # et pour traiter latin et utf8 ensemble, ~ $ sed -e 's/\xc2\?\xa0/_/g' texte texte_utf8 ascii pur sucre espace normal espace_insecable (sans accent ;) çédille latin1 ascii pur sucre espace normal espace_insecable (sans accent ;) çédille UTF-8 -- Jacques L'helgoualc'h -- 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]

