"utf-8" n'est pas valide, contrairement à "utf8".
Exemple tiré de https://dev.mysql.com/doc/refman/5.0...nction_convert :
Code:SELECT CONVERT('abc' USING utf8);
Version imprimable
"utf-8" n'est pas valide, contrairement à "utf8".
Exemple tiré de https://dev.mysql.com/doc/refman/5.0...nction_convert :
Code:SELECT CONVERT('abc' USING utf8);
Ici, la conclusion est un peu raccourcie, il faut tout de même préciser que sed tient compte de la locale, voici un exemple:
Dans le premier cas, la commande "y" ne fonctionne pas car sed ne voit pas le "é" mais le caractère "\303" et le caractère "\251" tandis que dans le deuxième cas, il sait que c'est un caractère UTF8.Code:
1
2
3
4
5
6 $ echo 'é' | sed -n 'l' \303\251$ $ echo 'é' | LANG=C sed 'y/é/e/' sed: -e expression #1, char 7: strings for `y' command are different lengths $ echo 'é' | LANG=fr_FR.UTF-8 sed 'y/é/e/' e
Et ceci est le cas pour la plupart de commandes unix, voici un autre exemple où nous pouvons tomber dans le piège:
Selon la locale utilisée, la commande wc ne voit pas le même nombre de caractères.Code:
1
2
3
4
5
6
7
8 $ echo -n 'é' | LANG=C wc -m 2 $ echo -n 'é' | LANG=fr_FR.UTF-8 wc -m 1 $ echo -ne '\0303\0251' | LANG=fr_FR.UTF-8 wc -m 1 $ echo -ne '\0303\0251' | LANG=C wc -m 2