Guest User

Untitled

a guest
May 25th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. Перкодировка большого числа файлов из cp1251 в UTF-8
  2. ====================================================
  3.  
  4. Полное условие задачи:
  5.  
  6. * Смена кодировки текстового файла с cp1251 на UTF-8
  7. * Последняя строка обязательно должна завершаться символом конца строки
  8. * В качестве символа конца строки должны выступать CR + LF, как в DOS
  9.  
  10. Решение с помощью редактора Vim:
  11.  
  12. # В редакторе меняем текущую директорию, на каталог с файлами, которые надо
  13. # перекодировать.
  14. :cd /path/to/dir/with/files/
  15.  
  16. # Используя wildcards описываем класс файлов из нашего каталога, которые нам
  17. # надо открыть, и добавляем этот класс в список аргументов Vim. Практически это
  18. # значит, что все файлы будут считаны в отдельные буферы Vim, а для первого из
  19. # них ещё будет открыто окно Vim для возможности его редактирования.
  20. :args *.txt
  21.  
  22. # Далее, выполняем набор следующих комманд.
  23. :argdo e ++nobin ++enc=cp1251 | set eol fenc=utf-8 ft=dos | update
  24.  
  25. # ``:argdo`` выполняет стоящую далее через пробел строку с командами для всех
  26. # прежде открытых нами аргументов Vim.
  27. #
  28. # ``e ++nobin ++enc=cp1251`` открывает заново каждый аргумент в текстовом
  29. # недвоичном режиме (``++nobin`` в общем-то ненужная перестраховка) с
  30. # использованием кодировки cp1251. После этого идет разделитель комманд "|".
  31. # Перед ним обязательно в данном случае должен быть пробел, иначе команда
  32. # ``e[dit]`` получит неправильное имя кодировки "cp1251|", а дальнейшие слова
  33. # set, eol и т.п. будет воспринимать как обозначения имен файлов. В итоге, она
  34. # вместо того, чтобы повторно открыть файл, связанный с текущим буфером, будет
  35. # пытаться открыть файл set и ещё может выдать ошибку, что может открывать
  36. # только один файл, а не несколько.
  37. #
  38. # ``set eol`` или ``set endofline`` гарантирует, что в файле при записи
  39. # последняя строка обязательно будет кончаться символ конца строки.
  40. # Противополжная команда здесь -- ``set noeol``.
  41. #
  42. # ``set fenc=utf-8`` или ``set fileencoding=utf-8`` гарантирует, что при записи
  43. # файла будет использована кодировка UTF-8.
  44. #
  45. # ``set ft=dos`` или ``set filetype=dos`` определяет, что при записи в качестве
  46. # символов конца строки будет использована последовательность \r\n = CR + LF =
  47. # 0x0D + 0x0A = chr(13) + chr(10).
  48. #
  49. # Все три опции объединены через пробел после одной команды ``set``. Команда
  50. # ``update`` гарантирует, что файл будет сохранен только если в нем есть
  51. # изменения.
Add Comment
Please, Sign In to add comment