При использовании EmEditor сохранение файла Unicode в другом формате искажает / изменяет формат. Решение? - PullRequest
0 голосов
/ 12 июля 2011

Существует файл резервной копии MySQL, который представляет собой огромный файл - около 3 ГБ. В одной таблице есть столбец LONGBLOB, в котором хранятся данные изображений JPEG.

Файл успешно импортируется, если выполняется из MySQL Workbench - Импорт / восстановление данных.

Мне нужно открыть этот файл и извлечь первые несколько строк (около двух строк INSERT таблицы с данными изображения), чтобы я мог проверить, может ли другая программа импортировать эти данные в другую базу данных MySQL.

Я попытался открыть файл с помощью EmEditor (который хорош при открытии больших файлов), а затем скопировать / вставить только одну инструкцию вставки сценария в новый файл (примерно до строки 25, потому что рассматриваемая таблица является первой в сценарии резервного копирования), а затем вставьте выделенный фрагмент в новый файл.

Здесь возникает проблема:

Однако это портит кодировку (хотя я сохраняю как utf8). Я осознаю это, когда пытаюсь импортировать (восстановить) этот новый файл (снова используя MySQL Workbench) в базу данных MySQL, восстановление происходит без ошибок, но изображения JPEG в столбце BLOB-объектов теперь уничтожены / повреждены.

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

EmEditor не показывает кодировку в исходном файле, есть опция для обнаружения, и он определяет ее как «UTF8 Unsigned». Но при сохранении сохраняю как UTF8. Я также пытался сохранить как ANSI, ISO8859 (Windows по умолчанию) и т. Д. И т. Д., Но каждый раз один и тот же результат.

У вас есть какое-нибудь решение для этой конкретной проблемы? т.е. я хочу вырезать только первые несколько строк огромного файла резервной копии и сохранить его в новом файле, сохраняя кодировку, чтобы изображения (капли) не изменялись. Есть ли способ, которым это можно сделать с помощью EmEditor (т. Е. У меня неправильный подход [т.е. Cut-Paste]?) Есть ли специализированное программное обеспечение, которое может сделать это? Как я могу диагностировать, что здесь происходит не так?

Спасибо за любые ответы.

Ответы [ 2 ]

0 голосов
/ 02 августа 2011

При открытии исходного файла в EmEditor, пытаясь выбрать кодировку Binary (ASCII View). Binary (ASCII View), как сказал Бобинс, отобразит каждый байт на уникальный символ и сохранит его при сохранении файла. Я думаю, что это должно решить вашу проблему.

0 голосов
/ 13 июля 2011

это портит кодировку (хотя я сохраняю как utf8)

UTF-8 не является хорошим выбором для произвольных двоичных данных.Существует много последовательностей старших байтов, которые недопустимы в UTF-8, поэтому вы будете манипулировать ими в какой-то момент в процессе загрузки-изменения-сохранения.

Если вы загружаете файл, используя кодировку, которая отображаеткаждый байт до уникального символа, и повторно сохраните файл, используя ту же самую кодировку, вы должны сохранить исходный контент (*).ISO-8859-1 - это кодировка, обычно выбираемая для этой цели, поскольку она просто отображает каждый байт 0..0xFF на кодовую точку Unicode с тем же номером.

(*: предполагается, что редактор безопасен для двоичного кодаЧто касается других хитрых моментов, таких как нули, \n / \r и других управляющих символов ... Я считаю, что EmEditor может быть.)

...