Всем добрый вечер ~
Кто-то прислал мне простой текстовый файл SQL для интеграции в приложение, требующее кодировки UTF-8. Я использую Ma c, они - windows, но я не знаю, какую кодировку они использовали.
Выполнение file -I
в файле sql возвращает: application/octet-stream; charset=binary
Когда я открываю в редакторе Atom в MacOS, я могу прочитать файл с UTF-8, выбранным в правом нижнем подбаре (между разрывом строки = LF и синтаксисом = SQL), но я могу скажите, что он на самом деле не сохраняется как UTF8 по двум причинам:
/* SQL comments */
не запускает SQL раскраску синтаксиса с использованием UTF8, то есть редактор синтаксиса не распознает /* comment text */
в качестве комментариев, я предполагаю, что из-за лишнего невидимого символа нарушается сопоставление с шаблоном. когда я переключаюсь на UTF-16LE, /* comment text */
привязывается к правому темно-серому цвету, как и ожидалось, т.е. редактор теперь правильно читает текст
, когда я стрелка влево / вправо вокруг файла требуется 2 стрелки для перемещения одного символа. аналогично, счетчик строк / столбцов в левом нижнем углу (после пути к файлу) отсчитывает два столбца для каждого видимого символа, перемещаемого курсором.
Я предполагаю, что селектор кодировки нижний правый - только для просмотра, что имеет смысл. Учитывая, что это простой файл SQL без специальных символов, я действительно хочу «Сохранить как UTF8» и заставить редактор выбросить лишние невидимые символы.
Я пробовал несколько решений я нашел в сети, все безуспешно:
- вырезать все содержимое из исходного файла, изменить кодировку на UTF8, затем вставить и сохранить ... без изменения поведения
- создать новый UTF8, затем скопируйте / вставьте все содержимое ... что интересно, я получаю файл "UTF8", для которого требуется 4 стрелки влево на каждый видимый сдвиг символа. Неправильное направление.
- бег
iconv -c -t UTF-8 Dictionary_Analysis.coa.sql > DictTest.sql
без изменения поведения - изменил файл на UTF8 и вручную перепечатал некоторые комментарии ... это сработало! для тех байтов, которые я ввел вручную, это UTF8, так как поведения 1 и 2 возвращаются к «нормальному», как в случае 1 стрелка влево == 1 количество столбцов == одно видимое движение, и комментарии имеют правильный синтаксис.
Но я не хочу перепечатывать весь их SQL документ. Назовите меня ленивым, но я уверен, что есть способ получше.
Мысли?
Две дополнительные мысли ... Я, скорее всего, продолжу получать SQL файлов в будущем с этим проблема, так что в идеале я могу написать сценарий или создать короткий файл .py для учета. Во-вторых, Atom - отличный редактор, поэтому меня удивляет, что у меня так много проблем с этой, казалось бы, простой задачей. Мне кажется, что я упускаю что-то очевидное, будь то кодировка или редактор Atom ... образование всегда приветствуется.
Спасибо!