Непонятка с метаэдитором

 

Всегда делал MQL-коды в программе Notepad++. Для компиляции открывал Metaeditor-ом и всё было нормально. После билда 600 всё изменилось - Метаэдитор стал жить какой-то своей жизнью. То открывает mq4-файлы нормально, то вдруг, ни с того ни с сего выдаёт вот такие иероглифы. Как это изменить-то? Я что-то несколько лет назад читал про то, что теперь файлы метаэдитор сохраняет в какой-то новой кодировке...

 

Короче, выкрутился. Создал в метаэдиторе новый индикатор без параметров. Вместо его кода через буфер обмена вставил код из индикатора, созданного в Notepad++. Сохранился, переоткрыл редактором Notepad++. Он на автопилоте подхватил кодировку. Оказывается это какая-то UCS-2 LE BOM кодировка. На кой чёрт было так менять...

Ч‌ем это стало лучше - непонятно. Чем стало хуже - ясно - коды, наработанных за десяток лет программ, придётся переделывать. Особенно те, в которых переключатель свитч перестал работать...

О‌х и наделали головняка разработчики... Решили MQL5 сделать - та зелёная вам улица. Зачем же было так круто менять mql4? Сплошной головняк теперь с кодами - то стрелки не пашут - рисуется чёрти-что (а обещали-то поддержку старого MQL4), то иные чудеса выскакивают. Не даром видать, говорят, что лучшее - враг хорошего.

 
Vitaly Murlenko:

Короче, выкрутился. Создал в метаэдиторе новый индикатор без параметров. Вместо его кода через буфер обмена вставил код из индикатора, созданного в Notepad++. Сохранился, переоткрыл редактором Notepad++. Он на автопилоте подхватил кодировку. Оказывается это какая-то UCS-2 LE BOM кодировка. На кой чёрт было так менять...

Ч‌ем это стало лучше - непонятно. Чем стало хуже - ясно - коды, наработанных за десяток лет программ, придётся переделывать. Особенно те, в которых переключатель свитч перестал работать...

О‌х и наделали головняка разработчики... Решили MQL5 сделать - та зелёная вам улица. Зачем же было так круто менять mql4? Сплошной головняк теперь с кодами - то стрелки не пашут - рисуется чёрти-что (а обещали-то поддержку старого MQL4), то иные чудеса выскакивают. Не даром видать, говорят, что лучшее - враг хорошего.

Попробуйте совместить недоEditor c Notepad++
 

Попробуйте найти версию любимого редактора посвежее. UCS-2 - старое подмножество стандарта UTF-16, который МетаЕдитор с некоторых пор использует для всех файлов, в которых встречаются не-ASCII символы.

Я‌ тоже против такой безусловной "оптимизации". Должна быть опция в настройках. Но у MQ свое мнение.

 
Сохраните файл в UTF-8, эдитор подхватит его и больше не будет менять кодировку. При этом будут нормально отображаться все юникодные символы.
 
Stanislav Korotky:

Попробуйте найти версию любимого редактора посвежее. UCS-2 - старое подмножество стандарта UTF-16, который МетаЕдитор с некоторых пор использует для всех файлов, в которых встречаются не-ASCII символы.

Я‌ тоже против такой безусловной "оптимизации". Должна быть опция в настройках. Но у MQ свое мнение.


Я всегда обновляю Notepad++. Но всё равно спасибо.
 
Andrey Khatimlianskii:
Сохраните файл в UTF-8, эдитор подхватит его и больше не будет менять кодировку. При этом будут нормально отображаться все юникодные символы.


Сенкс, попробую, так как у моего файла была кодовая страница Windows-1251.

П‌опробую UTF-8 без BOM и с ним.

 
Попробовал - работает и с BOM и без него. Всем спасибо.
 
Andrey Khatimlianskii:
Сохраните файл в UTF-8, эдитор подхватит его и больше не будет менять кодировку. При этом будут нормально отображаться все юникодные символы.
Вах! Да это же надо - прямо в жирный FAQ.
 

Unicode как раз решает проблему множественных кодировок, запихиваемых в обычные однобайтовые текстовые файлы. Задумайтесь, сколько MQL файлов в собственных кодировках раскидано по миру. Ими совершенно невозможно обмениваться.

Редактор пытается определить реальную кодировку открываемого файла и иногда в очень редких случаях может ошибиться. Когда редактор сохраняет файл, то анализируется наличие символов вне ASCII (0-127) диапазона и тогда сохраняет в стандарном Unicode формате. Странно, что абсолютно правильный и стандартизированный Unicode, являющийся основным форматом ядра Windows, кто-то называет устаревшим.

Unicode файлы на 100% решают проблему обмена файлами в мультиязычной среде. UTF8 пусть себе тоже живет - мы нормально его распознаем при чтении.

 
Renat Fatkhullin:

Странно, что абсолютно правильный и стандартизированный Unicode, являющийся основным форматом ядра Windows, кто-то называет устаревшим.

Ваш абсолютно правильный UCS-2 не всеми редакторами/сервисами нормально распознается.

Но и неудобство не критичное — один раз конвертируешь все файлы в UTF-8, и нормально работаешь.

Причина обращения: