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 человек заметили этот пост:

ОлегДорожко комментирует...

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

Так их!

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

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

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

Bose комментирует...

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

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

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

nickless комментирует...

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

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

file *.txt | grep UTF

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

Bose комментирует...

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

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

nickless комментирует...

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

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

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

Bose комментирует...

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

Отправить комментарий

Читатели