2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4  След.
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 21:53 
Заслуженный участник


28/04/09
1933
Nataly-Mak
EtCetera в сообщении #761563 писал(а):
Nataly-Mak в сообщении #761515 писал(а):
Прикрепляю файл, который я получила, проделав указанную процедуру и выбрав кодировку ANSI.
Выглядит это так:

Код:
?????????????????????????????????????????????????????????????????????

Мой компьютер ничего не понял :D
Это очень странно, потому что у меня Ваш первоначальный файл открывается нормально при выборе ANSI. Правда, у меня Windows 7 Pro 32-bit. А, может быть, это уже как-то связано со шрифтами. Так или иначе, завтра попробую открыть Ваш файлик на машине с 64-битной Windows 7.
Попробовал. Файлик нормально открывается Блокнотом на 64-битной семерке (при выборе ANSI, естественно). Так что либо Вы где-то ошиблись, либо это у Вас что-то сугубо локальное.

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 22:07 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
Вообще-то меня больше интересует вопрос: почему у меня файл испортился без каких-либо видимых причин? Причём испортился только один файл из 4-х задействованных в данной программе, остальные три файла вполне нормальны и до сих пор не испортились. Не испортился и файл A17.txt, куда я переписала данные из испорченного файла A16.txt.
До сих пор кручу эту программу и всё нормально работает, все файлы в порядке.

Такое совершенно непредсказуемое и необъяснимое поведение очень печально.
Представьте себе: запускаю я программу и жду результатов, а результатов нет и час, и два и сутки. И оказывается причина в том, что сам собой захотел испортиться один из файлов, содержащих исходные данные для программы. И об этом ведь нигде не сообщается, что он испортился!
Придётся вводить в программу эхо-контроль, чтобы программа вывела на экран все исходные данные, которые она получила из внешних файлов.

-- Пн сен 09, 2013 23:26:52 --

Скачала испорченный файл A16.txt с Яндекс.Диска и ещё раз выполнила процедуру изменения кодировки на ANSI.
Показываю все этапы, в сохранённом файле A76.txt с новой кодировкой ANSI я вижу одни вопросы.

Изображение

Открыла файл A16.txt в Блокноте (используя Блокнот --> Открыть файл)

Изображение

Сохранила как новый файл A76.txt, выбрав кодировку ANSI:

Изображение

Открыла новый файл A76.txt в Блокноте.

-- Пн сен 09, 2013 23:52:14 --

Кстати, файл A76.txt даже в WordPad открывается так же: одни вопросы.

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 22:54 
Заслуженный участник


04/05/09
4582
Изначально файл не испортился. Сломался блокнот, пытаясь понять, что в этом файле. Это бага блокнота, причём не любой версии. (Вроде бы, его можно заставить открыть файл правильно, через команду "Open" и указав явно кодировку).

А когда вы сохранили неправильно открытый файл, то новый файл уже окончательно испортился.

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 22:55 
Заслуженный участник


28/04/09
1933
Nataly-Mak
Nataly-Mak в сообщении #762122 писал(а):
Вообще-то меня больше интересует вопрос: почему у меня файл испортился без каких-либо видимых причин? Причём испортился только один файл из 4-х задействованных в данной программе, остальные три файла вполне нормальны и до сих пор не испортились. Не испортился и файл A17.txt, куда я переписала данные из испорченного файла A16.txt.
Файл не портился. Просто Блокнот его неправильно показывает (Вы в этом и сами убеждались, открывая файл Wordpad'ом). Причину я уже указывал:
EtCetera в сообщении #761504 писал(а):
Причина в неадекватном поведении WinAPI-шной функции IsTextUnicode, которая используется Блокнотом для автоматического определения кодировки в файлах без BOM.
Т.е. если в начале файла не найден BOM $\text{---}$ Byte Order Mark (символ кодировки Unicode, предназначенный для индикации порядка байт), то Блокнот использует функцию, которая пытается по последовательности байт файла определить, в какой кодировке (Unicode или нет) находится текст в нем. Иногда (довольно редко, надо заметить для справедливости), как в случае Вашего файла, эта функция считает, что что файл кодирован в Unicode, хотя на самом деле это не так.
Nataly-Mak в сообщении #762122 писал(а):
Показываю все этапы, в сохранённом файле A76.txt с новой кодировкой ANSI я вижу одни вопросы.
Ваша ошибка в том, что Вы пытаетесь сохранить неправильно открытый файл в кодировке ANSI. А надо его открыть в ANSI. Т.е. выбрать кодировку ANSI в диалоге выбора файла ("Открыть как...").
Откройте Блокнот, нажмите Ctrl+O (или Файл $\to$ Открыть...), в диалоге открытия файла выберите его имя и кодировку ANSI, нажмите "Открыть".

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:00 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
Ваши пояснения ясности мне не прибавили.

Файл у меня испортился изначально и сам по себе. Я не знаю, чей это баг, но не вижу никаких видимых причин того, почему файл испортился.

Подождав результатов от программы минут 30, я прервала её и решила проверить файлы с исходными данными (потому что уже имею опыт, когда у меня точно так же портились файлы). Подчеркну ещё раз: в программе задействованы 4 файла с исходными данными, испортился только один.
Мне в данный момент, когда я обнаружила, что файл испортился, уже не имеет смысла заставлять его открыться правильно. Я просто удаляю испорченный файл и записываю данные в новый файл.

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:03 
Заслуженный участник


04/05/09
4582
Nataly-Mak в сообщении #762153 писал(а):
Файл у меня испортился изначально и сам по себе.
Как вы это определили?

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:03 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
EtCetera в сообщении #762151 писал(а):
Nataly-Mak
Nataly-Mak в сообщении #762122 писал(а):
Вообще-то меня больше интересует вопрос: почему у меня файл испортился без каких-либо видимых причин? Причём испортился только один файл из 4-х задействованных в данной программе, остальные три файла вполне нормальны и до сих пор не испортились. Не испортился и файл A17.txt, куда я переписала данные из испорченного файла A16.txt.
Файл не портился. Просто Блокнот его неправильно показывает (Вы в этом и сами убеждались, открывая файл Wordpad'ом).

Хорошо, файл не испортился.
Тогда такой вопрос: программа вводит исходные данные из этого файла правильно? Она понимает, что это такие-то числа, а не китайские иероглифы?
Я могу это сейчас проверить, введу в программу эхо-контроль и посмотрю, что она получает из этого файла с иероглифами.

-- Вт сен 10, 2013 00:06:20 --

venco в сообщении #762154 писал(а):
Nataly-Mak в сообщении #762153 писал(а):
Файл у меня испортился изначально и сам по себе.
Как вы это определили?

Так я же вроде описала. Прервала программу и проверила все 4 файла с исходными данными, естественно, открыв их в Блокноте (как всегда делаю). Увидела в 3-х файлах правильные числа, а в четвёртом файле увидела иероглифы. Окуда взялись иероглифы, если я записала в файл числа (записывала я их вручную)?

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:06 
Заслуженный участник


04/05/09
4582
Nataly-Mak в сообщении #762155 писал(а):
Тогда такой вопрос: программа вводит исходные данные из этого файла правильно? Она понимает, что это такие-то числа, а не китайские иероглифы?
Программа пытается определить кодировку файлов (или по-умолчанию считает что там ASCII)? Если пытается, пользуется для этого функцией IsTextUnicode? Если на любой вопрос ответ - "нет", то прочитает правильно.

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:08 
Заслуженный участник


28/04/09
1933
venco
venco в сообщении #762150 писал(а):
Это бага блокнота, причём не любой версии.
Насколько я понимаю, любой. Т.е. принципиально алгоритм в Vista/7/8 не менялся по сравнению с XP и более старыми версиями (раз баг все равно всплывает). Просто каким-то образом отключили его проявление на коротких текстовых строках (вроде "this app can break" и т.п.). Я полагаю, что отрубив автоопределение Unicode для файлов короче 128 байт.

Nataly-Mak
Nataly-Mak в сообщении #762153 писал(а):
Файл у меня испортился изначально и сам по себе.
Файл не портился!
Nataly-Mak в сообщении #762153 писал(а):
Подчеркну ещё раз: в программе задействованы 4 файла с исходными данными, испортился только один.
Разумеется, только один. Такое поведение и должно быть редкостью, иначе Microsoft бы уже давно завалили жалобами.
Nataly-Mak в сообщении #762153 писал(а):
Мне в данный момент, когда я обнаружила, что файл испортился, уже не имеет смысл заставлять его открыться правильно.
А зря. Все-таки попробуйте, и Вы удивитесь.
Nataly-Mak в сообщении #762153 писал(а):
Я просто удаляю испорченный файл и записываю данные в новый файл.
И что получается?

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:09 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
Цитата:
Программа пытается определить кодировку файлов (или по-умолчанию считает что там ASCII)?
Программа ничего не пытается определить, просто файл открывается (OPEN) и данные из него считываются (INPUT).

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:09 
Заслуженный участник


04/05/09
4582
Nataly-Mak в сообщении #762155 писал(а):
Так я же вроде описала. Прервала программу и проверила все 4 файла с исходными данными, естественно, открыв их в Блокноте (как всегда делаю).
Таким образом вы могли наткнутся на ошибку в Блокноте. Как вы убедились, что именно файл испортился, а не Блокнот ошибся?

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:13 
Заблокирован
Аватара пользователя


22/03/08

7154
Саратов
venco в сообщении #762161 писал(а):
Nataly-Mak в сообщении #762155 писал(а):
Так я же вроде описала. Прервала программу и проверила все 4 файла с исходными данными, естественно, открыв их в Блокноте (как всегда делаю).
Таким образом вы могли наткнутся на ошибку в Блокноте. Как вы убедились, что именно файл испортился, а не Блокнот ошибся?

Почему Блокнот ошибся только в одном из 4-х файлов (все 4 файла однотипны и были созданы вручную)?

Я уже сказала: не знаю, кто тут ошибся, но вижу, что данные в файле изображаются неправильно, должны быть числа, а изображаются иероглифы.

-- Вт сен 10, 2013 00:15:43 --

EtCetera в сообщении #762158 писал(а):
Nataly-Mak в сообщении #762153 писал(а):
Я просто удаляю испорченный файл и записываю данные в новый файл.
И что получается?

Вы заставляете меня повторять одно и то же. Кажется, я уже писала, что записав данные в новый файл A17.txt, я до сих пор работаю с этой программой и с данными файлами и ничего пока не испортилось, всё нормально работает.

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:21 
Заслуженный участник


28/04/09
1933
Nataly-Mak
Nataly-Mak в сообщении #762163 писал(а):
Кажется, я уже писала, что записав данные в новый файл A17.txt, я до сих пор работаю с этой программой и с данными файлами и ничего пока не испортилось, всё нормально работает.
Извиняюсь за невнимательность. А чем A17 отличается от A16 (я имею в виду содержимое)? Там достаточно отличия буквально в 1 символ, чтобы файл стал показываться правильно.

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:23 
Заслуженный участник


04/05/09
4582
Nataly-Mak в сообщении #762163 писал(а):
Почему Блокнот ошибся только в одном из 4-х файлов (все 4 файла однотипны и были созданы вручную)?
Потому что ошибка редкая. Добавление пробела или пустой строчки может всё изменить.

Nataly-Mak в сообщении #762163 писал(а):
Я уже сказала: не знаю, кто тут ошибся, но вижу, что данные в файле изображаются неправильно, должны быть числа, а изображаются иероглифы.
Вам уже раз десять сказали, кто тут ошибся, а вы всё не знаете.

 Профиль  
                  
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:29 
Заслуженный участник


11/05/08
32166
Nataly-Mak, Вы, по-моему, какой-то ерундой занимаетесь. Если Вам кажется, что с файлом что-то произошло -- откройте его для проверки в каком-нибудь нейтральном вьюере, который заведомо ничего не гадит. Хотя бы и в FAR клавишей F3. Там потом горячими клавишами можно будет принудительно выбрать много-много разных кодировок (хотя и не все, конечно, на экране будут отображаться адекватно); но самое главное -- там внутри него можно клавишей F4 вывести на экран тупо двоичный код (в смысле шестнадцатиричный, конечно). Вот и сравните исходный файл и потомошний -- различаются ли они.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу Пред.  1, 2, 3, 4  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group