Motto

В тихом саду здравомыслия
Пусть на вас постоянно падают
кокосовые орехи пробужденности.
Чогьям Трунгпа РИНПОЧЕ


Версия для мобильного


вторник, 9 сентября 2008 г.

TortoiseMerge 1.5.3 втихаря конвертирует текст в UTF-8 w/o BOM

Сегодня выяснил, как получилось что .dfm-файлы сохранились в UTF-8 вместо ANSI. Виноватой оказалась TortoiseSVN 1.5.3, точнее баг в TortoiseMerge. Оказалось что строки изменили кодировку после использования пункта меню Use This Text Block.

В результате получилось, что и слева и справа, один и тот же текст, но в левой панели он в ANSI, а в правой в UTF-8 w/o BOM. При этом эти строки подсвечиваются как разные, но с символом "=". А я ещё помню, что удивлялся этому "=", когда Commit делал.



Вчера искал какую-нибудь программку, которая смогла бы пройтись по всем файлам проекта, и выдала список файлов сохранённых в UTF-8, но так и не смог ничего найти. Казалось бы, очевидная функция, ан нигде её нет. Поставил пару бесплатных блокнотов - все умеют определять кодировку, но только при открытии файла в редакторе. А вручную открывать 30 000 файлов с исходниками совсем не хочется. К счастью нашлась одна бесплатная библиотечка умеющая определять кодировку файла, с её помощью быстренько был получен список. Нарушители было сконвертированы назад в ANSI и закоммичены в репозиторий.

Сообщил об ошибке куда следует. Буду ждать ответа.

p.s. всё-таки не стоит спешить с установкой свежих версий, если устраивают старые.

Update: исправили.

6 комментариев:

  1. >>Сообщил об ошибке куда следует. Буду ждать ответа.

    Так их!

    >>всё-таки не стоит спешить с установкой свежих версий, если устраивает и в старых.

    Правильно. Я только stable ставлю.
    Чем старше продукт, тем тяжелее, имхо, с ним работать.

    Лучше несколько атомарных программ и самостоятельно координировать получаемый результат, чем одна навороченная в которой хрен разберешься.

    ОтветитьУдалить
  2. > Правильно. Я только stable ставлю.
    Это и есть stable. Самый что ни на есть последний официальный стабильный билд. И в стабильных билдах полно багов. =)

    > Лучше несколько атомарных программ и самостоятельно координировать получаемый результат, чем одна навороченная в которой хрен разберешься.

    Смотря какие программы. =)

    ОтветитьУдалить
  3. >> Вчера искал какую-нибудь программку, которая смогла бы пройтись
    >> по всем файлам проекта, и выдала список файлов сохранённых в
    >> UTF-8, но так и не смог ничего найти

    Неплохо работает

    file *.txt | grep UTF

    (в cygwin-е или линуксе)

    ОтветитьУдалить
  4. > Неплохо работает
    > file *.txt | grep UTF
    > (в cygwin-е или линуксе)

    Я в линуксе почти ничего не умею. Ради интереса поставил cygwin.
    "file *.txt | grep UTF" работает хорошо, но у меня показывает только файлы из текущей директории. Я так и не понял как сделать чтобы он обходил всё дерево каталогов начиная с текущего.

    ОтветитьУдалить
  5. > как сделать чтобы он обходил всё дерево каталогов начиная с текущего

    Можно рекурсивно поиском:

    find . \( -name '*.pas' -or -name '*.dfm' -or -name '*.txt' \) -exec file '{}' \; | grep UTF

    ОтветитьУдалить
  6. Спасибо, nickless! =)
    теперь осталось научиться быстро набирать это по памяти =)

    ОтветитьУдалить

Постоянные читатели