Как преобразовать текстовый файл со смесью кодировки к единственному кодированию?

  1. Я создал текстовый файл путем копирования его различных частей с других источников (веб-страницы, другие текстовые файлы, файлы PDF) в gedit и сохранения его в файл. Я предполагаю, что это - причина, что у меня есть несколько кодировок в текстовом файле, но я не уверен. Как я могу постараться не создавать текстовый файл со смешанной кодировкой путем копирования его различных частей с других источников в gedit?
  2. Каждый раз, когда я открываю файл в gedit, gedit может всегда показывать или декодировать каждую часть текста правильно. Кажется, что gedit может обработать текстовый файл со смешанной кодировкой, но я не уверен.

    Но когда я открываю файл в emacs, будут символы, которые нельзя показать правильно. (Я не уверен, почему emacs не может сделать этого.), Таким образом, я хотел бы преобразовать файл от смешанной кодировки до единственного кодирования, такой как utf-8.

    Так как я думаю, что gedit может обнаружить корректную кодировку для различных частей текстового файла, и я не знаю, существуют ли другие приложения, которые могут сделать так, было бы возможно попросить, чтобы gedit преобразовал файл в utf-8 или по крайней мере сказал мне, какое кодирование он находит для который часть файла?

Спасибо.

3
задан 27 September 2014 в 21:44

2 ответа

Hmmm... понятие файла с различным кодированием является несколько шатким, чтобы быть честным. Если у Вас есть немного времени, , эту статью этот ) стоит прочитать.

Для Linux файл является последовательностью байтов. Если Вы попросите, чтобы программа интерпретировала его как текстовый файл, это сделает это с помощью отображения между байтами и символами; это отображение является кодированием. Почти весь текстовый редактор я знаю (не текстовые процессоры!) просто понимают понятие одного кодирования для одного файла.

я не опытен на gedit; возможно, это делает некоторое волшебство как попытка автоматически обнаружить кодирование линию за линией или текстовый блок текстовым блоком..., если имеет место, что можно попытаться сделать то же использование enca (1):

 while read line; do echo $line | enconv -L none -x utf8; done < text.mixed > text.utf8

..., но это зависит от того, насколько хороший enca в предположении Вас кодирование (работает почти хорошо с восточноевропейцем, но не с Latin1, например).

(1) Это находится в repos, просто установите его с sudo apt-get enca.

2
ответ дан 17 November 2019 в 20:50

Я имел ту же проблему и решил ее с Emacs. Решение заключается в кавычки от здесь :

Другое возможное решение состоит в том, чтобы отметить каждый регион, появляющийся с китайскими символами, и повторно кодировать, это с регионом перекода M-x, давая "текст было действительно в" как utf-16-le и, "Но интерпретировалось как" как utf-16-be.

Другой должен разделить две части, которые имеют различную кодировку, копируют их в различные файлы, преобразовывают кодирование того и добавляют его к другому. В моем случае это работало с Atom, но не с Блокнотом ++ (utf16-le/be).

1
ответ дан 17 November 2019 в 20:50

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

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