В отличии от вьювера, в редакторе запрещено переключение из однобайтных кодировок в Unicode или наоборот.
Обойти это ограничение можно с помощью следующего макроса:
Из любой однобайтной кодировки фар позволяет свободное переключение в UTF-8.
Однако, это действие с высокой степенью вероятности может оказаться деструктивно и при этом необратимо.
Поэтому предлагается делать это макросом:
F5: "Перезагрузка" файла.
Если ошибка возникает уже при открытии файла — достаточно поменять кодировку (F8 или Shift-F8) и нажать F5 для перегрузки файла.
Alt-Shift-F4: пере-открытие текущего файла с выбором кодовой страницы.
Позволяет поменять кодировку даже если посредством Shift-F8 это невозможно (переключение между одно- / многобайтными кодировкими).
Alt-Shift-F4(в панели): открытие файла под курсором с выбором кодовой страницы.
John Doe wrote:В редакторе из цикла переключения исключается юникод (во избежание необратимых изменений)
в большинстве случаев надо переключение между cp1251 и utf-8. в баге задан очень правильный вопрос! изменение кодировки должно, просто обязано отменяться через Ctrl-z - взять хотя бы тот же notepad++, там чересчур удобно сделана работа с кодировками.
glad1ator wrote:взять хотя бы тот же notepad++, там чересчур удобно сделана работа с кодировками.
А почему Вы им не пользуетесь?
очень-очень активно пользуюсь. но есть одна задачка, которую проще сделать в фаре: например, я залил файлики в utf-8 без BOM на фтп (скажем сайт). мне надо изменить один из файликов с русскими буквами. сейчас я редактирую этот файл в ноутпад++ и перезаливаю его на фтп, а насколько было бы удобнее открыть этот файл на фтп, нажать f8 (или даже не нажимать, сделая utf-8 кодировкой по-умолчанию) и отредактировать файл
про Shift+F4 я знаю. это не самое удачное решение, так как иногда вместе с файлами utf-8 попадают файлы в cp1251 (например, сторонние библиотеки) и тогда вообще каламбур получится
glad1ator
Я лично тоже регулярно редактирую файлики своего сайта по фтп в юникоде, меня сейчас этот процесс в Far устраивает полностью (особенно после того, как я успел намучаться в своё время с неюникодным Far'ом). Хотя, конечно, всё, что касается удобства в работе - сугубо индивидуально.
про Shift+F4 я знаю. это не самое удачное решение, так как иногда вместе с файлами utf-8 попадают файлы в cp1251 (например, сторонние библиотеки) и тогда вообще каламбур получится
Вот тут не совсем понятно вообще-то, какая связь. Ну да ладно.
Александр Кряжев wrote:glad1ator
Я лично тоже регулярно редактирую файлики своего сайта по фтп в юникоде, меня сейчас этот процесс в Far устраивает полностью (особенно после того, как я успел намучаться в своё время с неюникодным Far'ом). Хотя, конечно, всё, что касается удобства в работе - сугубо индивидуально.
про Shift+F4 я знаю. это не самое удачное решение, так как иногда вместе с файлами utf-8 попадают файлы в cp1251 (например, сторонние библиотеки) и тогда вообще каламбур получится
Вот тут не совсем понятно вообще-то, какая связь. Ну да ладно.
по поводу удобства - у меня мания делать всё в минимум кликов по поводу Shift+F4 - если навести курсор на файл и нажать Shift+F4, то откроется окно с предложением выбора кодировки для открытия файла - достаточно полезная штука
glad1ator wrote:по поводу Shift+F4 - если навести курсор на файл и нажать Shift+F4, то откроется окно с предложением выбора кодировки для открытия файла - достаточно полезная штука
Это-то я в курсе. Только, при открытом файле можно ещё нажать Shift+F8 и выбрать что угодно. Более того, в следующий раз оно этот файл откроет в том же, т.к. запомнит. Как-то так.
Upd: А ещё автоопределение кодировки есть.
Александр Кряжев wrote:Только, при открытом файле можно ещё нажать Shift+F8 и выбрать что угодно. Более того, в следующий раз оно этот файл откроет в том же, т.к. запомнит. Как-то так.
Много действий + нету отмены перекодирования, как написано в баге
Александр Кряжев wrote:Upd: А ещё автоопределение кодировки есть.
Не факт, что это автоопределение шарит файлы без BOM
Для комплекта предлагается макрос, решающий проблему отсутствия переключения между Unicode и однобайтными кодировками.
У меня повешен на F9. Переключает UTF-16/OEM.
$If (Editor.State & EDITORSTATE_UNSAVED)
msgbox("Warning","There are unsaved changes",MSGBOX_WARNING)
$Exit
$End
%Modal=Editor.State & (EDITORSTATE_MODAL+EDITORSTATE_IN_MEMORY+EDITORSTATE_TEMPORARY);
ShiftF8
%CP=Menu.Value;
$If(Menu.Select("UTF-8",MENUSELECT_MATCH_SUBSTR)<0) $Exit $End
Enter
$If(Dialog && !%Modal)
MMode(1,0) sleep(700) MMode(1,1)
$If(1==msgbox("","Try to undo?",MSGBOX_MB_OKCANCEL))
Esc
%File=Editor.FileName;
ShiftF4 print(%File)
Tab CtrlDown
Menu.Select(%CP) Enter
Enter
ShiftTab Enter
$Else
Esc
$End
$End
Безопасность достигается за счёт того, что переключение производится только при сохранённом файле.
Если переключение приводит к ошибке, то файл автоматически переоткрывается заново, в исходной кодировке.
╔═════════════════ Warning ═════════════════╗
║ File contains characters, which cannot be ║
║ correctly read using selected codepage. ║
║ It is not recommended to save this file. ║
╟───────────────────────────────────────────╢
║ { OK } ║
╚═══════════════════════════════════════════╝
возникает уже при открытии файла — достаточно поменять кодировку (F8 или Shift-F8) и нажать F5 для перегрузки файла.
Alt-Shift-F4: пере-открытие текущего файла с выбором кодовой страницы.
Позволяет поменять кодировку даже если посредством Shift-F8 это невозможно (переключение между одно- / многобайтными кодировкими).