Cette question a également été postée dans this SO post .
J'ai un fichier texte standard qui est montré parfait avec chat:
$ cat myfile.txt
v0[shape = Mrecord, label = ""]
Lorsque j'utilise xxd pour examiner la ligne exacte se terminant, j'obtiens ceci:
$ xxd myfile.txt
00000000: 7630 5b73 6861 7065 203d 204d 7265 636f v0[shape = Mreco
00000010: 7264 2c20 6c61 6265 6c20 3d20 2222 5d0a rd, label = ""].
Cependant, lorsque j'essaie de l'ouvrir avec gedit, j'obtiens un étrange encodage d'une langue non latine. Qu'est-ce qui ne va pas dans Gedit? Voici le code source complet pour la reproduction:
$ cat main.cpp
#include <fstream>
int main(int argc, char **argv)
{
std::ofstream myfile("myfile.txt");
myfile << "v0[shape = Mrecord, label = \"\"]\n";
myfile.close();
return 0;
}
Et voici ma ligne de compilation:
g++ main.cpp -o main
De plus, je joins le fichier image de l’écran gedit:
EDIT: (résultat des remarques suggérées)
$ gedit --list-encodings | grep -Fx UTF-8
UTF-8
$ gedit --encoding UTF-8 myfile.txt
$ file -bi myfile.txt
text/plain; charset=us-ascii
Vous pouvez forcer le codage sur UTF-8 lorsque vous lancez gedit, par exemple,
\gedit --encoding UTF-8 myfile.txt
Quelque part, le codage par défaut est défini sur UTF-16LE, comme indiqué par @ filipe-brandenburger. Vous pouvez le vérifier en utilisant le codage UTF-16LE pour voir la sortie étrange.
\gedit --encoding UTF-16LE myfile.txt
Mise à jour - le codage peut être stocké avec le fichier uri.
L'éditeur Gnome a apparemment mis en cache le type d'encodage avec le fichier uri. Vous pouvez voir que je déplace le fichier. Par exemple.,
echo "Hello there." > testfile.txt
\gedit --encoding UTF-16LE testfile.txt
(voir texte en chinois)
mkdir tempdir
mv testfile.txt tempdir
cd tempdir
\gedit --encoding UTF-8 testfile.txt
(English text)
Maintenant ouvert sans spécifier d'encodage.
\gedit testfile.txt
(English text)
Mais déplacer le fichier en arrière le fait utiliser un encodage différent.
mv testfile.txt ..
cd ..
\gedit testfile.txt
(voir texte en chinois)