Этот вопрос wa также отправленный в этом ТАК отправляет.
У меня есть стандартный текстовый файл, который показывают прекрасный с кошкой:
$ cat myfile.txt
v0[shape = Mrecord, label = ""]
Когда я использую xxd для исследования точного окончания строки, я получаю это:
$ 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 = ""].
Однако, когда я пытаюсь открыть его с gedit, я получаю странное кодирование некоторых не латинский язык. Что идет не так, как надо в gedit? Вот полный исходный код для репродуцирования:
$ 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;
}
И вот моя строка компиляции:
g++ main.cpp -o main
Кроме того, я присоединяю файл изображения экран gedit:
Править: (вывод от предложенных комментариев)
$ gedit --list-encodings | grep -Fx UTF-8
UTF-8
$ gedit --encoding UTF-8 myfile.txt
$ file -bi myfile.txt
text/plain; charset=us-ascii
Можно вызвать кодирование к UTF-8 при запуске gedit, например,
\gedit --encoding UTF-8 myfile.txt
Где-нибудь Вам установили кодировку по умолчанию на UTF-16LE, как обозначено @filipe-brandenburger. Можно проверить это при помощи UTF-16LE, кодирующего для наблюдения странного вывода.
\gedit --encoding UTF-16LE myfile.txt
Обновление - кодирование может быть снабжено uri файла.
Редактор Gnome, по-видимому, кэшировал тип кодировки наряду с uri файла. Вы видите это мое перемещение файла вокруг. Например,
echo "Hello there." > testfile.txt
\gedit --encoding UTF-16LE testfile.txt
(см. китайский текст),
mkdir tempdir
mv testfile.txt tempdir
cd tempdir
\gedit --encoding UTF-8 testfile.txt
(Английский текст)
Теперь открытый, не указывая кодирование.
\gedit testfile.txt
(Английский текст)
Но перемещение файла назад заставляет это использовать другое кодирование.
mv testfile.txt ..
cd ..
\gedit testfile.txt
(см. китайский текст),