Иногда проще прочитать файл, как текстовый в однобайтовой кодировке, чтобы что-нибудь там поделать с помощью стандартных string.Replace/string.Remove и т.д., иногда даже если файл не совсем текстовый, потому что таких же удобных функций для работы с массивом байт нет (или я не нашел).
Это, наверняка, адский быдлокод, но все-таки вполне альтернатива изобретению совсем уж дикого велосипеда.
А у меня речь шла о текстовых файлах, правда, неизвестно в какой кодировке, и символах, которые нужно искать/менять. Символы от кодировки не зависели, посему любой файл можно было рассматривать, как текстовый, в любой однобайтовой кодировке. Главное, в какой кодировке открыл, в той же потом и сохранить.
Так вот File.ReadAllText пытается автоматически определить кодировку файла на основе наличия меток порядка следования байтов и принудительная установка кодировки не помогает. Если в файле встретился зловредный BOM, то ReadAllText наплюет на твои указания кодировки с высокой колокольни и откроет в той, на которую ему BOM указывает, а при сохранении, соответственно, будет глюк и текст превратится в тыкву.
Беда, конечно, решается стандартно, чтением файла с помощью StreamReader и записью с помощью StreamWriter, которые себе такой самодеятельности не позволяют, но "осадочек остался".
Пример
Скачать
Это репост с сайта http://tolik-punkoff.com
Оригинал: http://tolik-punkoff.com/2018/02/18/podv
|
Подводный камень при чтении файла с помощью File.ReadAllText
Патчи от WannaCry, NotPetya и скрытых майнеров для Windows XP
Пришлось столкнуться, слава Ктулху не с самими вирями и майнерами, но с незаделанными дырками. Есть два пути обновить пожилую ОС, протестировать на наличие уязвимости Eternal Blue и заткнуть только ее, или сделать кумулятивное обновление. Протестировать наличие дыры можно с помощью программы Eternal Blues. Пользоваться очень просто, вводим диапазон IP в локальной сети и жмем кнопку SCAN. Где в графе Vulnerable? указано YES, там дырка не заделана. ![]() Заделываем Качаем официальные патчи от MS KB4012583 KB4012598 Устанавливаем, перезагружаемся, и проверяем результат программой Eternal Blues Вот тут в прямом смысле слава Украине, а точнее конкретному украинцу под именем Simplix, который заботливо собрал все обновления со времен выхода SP3 в одну кучу, протестировал и выложил в одном пакете. Скачать можно с его сайта simplix Я поставил сразу тестовое обновление, но вы можете скачать то, которое уже полностью протестировано, хотя и тестовое вполне себе зашло. 5 машин и неделя времени, полет нормальный. Установка детально описана на его же форуме. Большой плюс для виндопользователей пиратской винды, если таковые найдутся :), после обновлений активация не слетает. Eternal Blues KB4012583 и KB4012598 UpdatePackLive-19.11.15 (если запускает пакет обновления с ключом /ie8, обновится IE до версии 8) Это репост с сайта http://tolik-punkoff.com Оригинал: http://tolik-punkoff.com/2018/02/21/patc |
