Умлаутс в текстовых файлах Windows не распознается в Ubuntu

Я довольно новичок в Ubuntu, и сейчас мне нужно использовать Windows и Ubuntu в зависимости от контекста. Одна проблема, с которой я столкнулся, заключается в том, что Ubuntu, похоже, не распознает умлауты и тому подобное (что довольно важно, поскольку я пишу по-немецки) в текстовых файлах, созданных под Windows. Вместо этого я просто вижу символ �. Это также приводит к выводу pdftex, где они отображаются как «1».

Так как эта проблема появляется как в gedit, так и в eclipse (и через LaTeX), она не может быть вызвана зрителем. Но это не может быть проблемой кодировки файлов, не так ли? Под Windows те же файлы работали просто отлично. (Однако я не знаю, что такое кодировка, и не смог выяснить это с помощью gedit и файлового менеджера.)

В чем причина такого поведения и как я могу его предотвратить?


Редактировать:

Вывод file -i document.tex:

document.tex: text/x-tex; charset=iso-8859-1

Вывод locale:

LANG=de_DE.UTF-8
LANGUAGE=en
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
3
задан 29 April 2014 в 01:53

1 ответ

Проблема состоит в том, что файлы используют iso-8859-1, который не распознает умляуты. Простое решение должно изменить кодирование файлов:

iconv -f iso-8859-1 -t utf8 document.tex > newdoc.tex

, Чтобы сделать это для всех tex файлов в Вашем текущем каталоге, выполните это:

for f in *tex; do mv "$f" "$f".bak && iconv -f iso-8859-1 -t utf8 "$f".bak > "$f"; done

команда выше сначала переименует каждый .tex файл к filename.tex.bak, затем изменит кодирование копии и сохранит его как filename.tex. Так, если у Вас будет файл, названный foo.tex, Вы закончите с файлом, названным foo.bak.tex с исходным кодированием и foo.tex с кодированием UTF8.

<час>

Другая проблема, с которой Вы, вероятно, встретитесь, состоит в том, что Windows использует \r\n в качестве окончания строки в то время как Linux & использование co \n один. Вы, поэтому, вероятно, захотите изменить это при работе над Linux. Для преобразования окончаний строки окон в стиль Unix сделайте

sed -i 's/\r//g' filename
0
ответ дан 29 April 2014 в 01:53

Другие вопросы по тегам:

Похожие вопросы: