Я довольно новичок в 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=
Проблема состоит в том, что файлы используют 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