2014 dxdy logo

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

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




На страницу Пред.  1, 2, 3, 4  След.
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 21:53 
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 
Аватара пользователя
Вообще-то меня больше интересует вопрос: почему у меня файл испортился без каких-либо видимых причин? Причём испортился только один файл из 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 
Изначально файл не испортился. Сломался блокнот, пытаясь понять, что в этом файле. Это бага блокнота, причём не любой версии. (Вроде бы, его можно заставить открыть файл правильно, через команду "Open" и указав явно кодировку).

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

 
 
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 22:55 
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 
Аватара пользователя
Ваши пояснения ясности мне не прибавили.

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

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

 
 
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:03 
Nataly-Mak в сообщении #762153 писал(а):
Файл у меня испортился изначально и сам по себе.
Как вы это определили?

 
 
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:03 
Аватара пользователя
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 
Nataly-Mak в сообщении #762155 писал(а):
Тогда такой вопрос: программа вводит исходные данные из этого файла правильно? Она понимает, что это такие-то числа, а не китайские иероглифы?
Программа пытается определить кодировку файлов (или по-умолчанию считает что там ASCII)? Если пытается, пользуется для этого функцией IsTextUnicode? Если на любой вопрос ответ - "нет", то прочитает правильно.

 
 
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:08 
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 
Аватара пользователя
Цитата:
Программа пытается определить кодировку файлов (или по-умолчанию считает что там ASCII)?
Программа ничего не пытается определить, просто файл открывается (OPEN) и данные из него считываются (INPUT).

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

 
 
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:13 
Аватара пользователя
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 
Nataly-Mak
Nataly-Mak в сообщении #762163 писал(а):
Кажется, я уже писала, что записав данные в новый файл A17.txt, я до сих пор работаю с этой программой и с данными файлами и ничего пока не испортилось, всё нормально работает.
Извиняюсь за невнимательность. А чем A17 отличается от A16 (я имею в виду содержимое)? Там достаточно отличия буквально в 1 символ, чтобы файл стал показываться правильно.

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

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

 
 
 
 Re: Почему портится текстовый файл?
Сообщение09.09.2013, 23:29 
Nataly-Mak, Вы, по-моему, какой-то ерундой занимаетесь. Если Вам кажется, что с файлом что-то произошло -- откройте его для проверки в каком-нибудь нейтральном вьюере, который заведомо ничего не гадит. Хотя бы и в FAR клавишей F3. Там потом горячими клавишами можно будет принудительно выбрать много-много разных кодировок (хотя и не все, конечно, на экране будут отображаться адекватно); но самое главное -- там внутри него можно клавишей F4 вывести на экран тупо двоичный код (в смысле шестнадцатиричный, конечно). Вот и сравните исходный файл и потомошний -- различаются ли они.

 
 
 [ Сообщений: 48 ]  На страницу Пред.  1, 2, 3, 4  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group