Мотивация: Я переписываю текстовые файлы doc, которые будут обрабатываться позже. Новые источники теперь используют UTF-8. Большие части источников одинаковы. Мне нужно найти различия.
Детали: В старых источниках документа используется кодировка cp1250, новые источники используют UTF-8. Оба новых и старых источника используют одни и те же окончания строки (CR + LF). Я использую Unicode-версию приложения WinMerge (WinMergeU.exe), версия 2.12.4.0.
Это почти работает, но... Когда линии различаются, они первоначально помечены как блок темно-желтым цветом, а разные части отмечены с использованием более светлого цвета. При перемещении курсора красного блока на панели внизу показана другая часть.
Однако блок текста отмечен темно-желтым также в случаях, когда (представление в Юникоде) текст тот же. Красный блок также перемещается в эти части файлов. В этом случае две панели внизу (которые показывают различия) содержат один и тот же текст, и ничто не помечено как другое. См. Рисунок ниже:
Самая первая строка отличается - это нормально. Но вторая строка имеет визуально одинаковое содержимое. Единственный символ вне диапазона ASCII - Ú
. Он имеет другое представление в закодированных источниках. Это приводит к тому, что строка помечена как другая, но нижележащие панели не помечены символом на линии как разные.
См. также следующие абзацы, которые являются точно такими же (только кодировка в источниках отличается, используется то же окончание строки).
Похоже, что начальное сравнение было основано на двоичном представлении строк. Есть ли какой-либо параметр, чтобы сообщить WinMerge, что сравнение (я имею в виду маркировку блоков) должно основываться на содержимом Unicode?
Я старался, но не везет.
Обновление: Вышеупомянутый вопрос касался последней стабильной версии 2.12.4. Бета-версия 2.13.22 отлично работает для меня. См. мой ответ ниже.