| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > кириллица в бинарном файле |
| Автор: RedKot 18.12.2017, 23:19 | ||
| Всем заинтересованным - здравствуйте! Есть ну очень простой код для записи данных в типизированный бинарный файл:
Проблема в том, что в созданном файле, кириллица (русские буквы) читаемы от А до Я, то есть весь текст абсолютно читаем в блокноте (в моем случае AkelPad x32 4.8.8.0). Однако и в интернете люди выкладывают свои примеры, где кириллица отображается каракулями (за исключением латиницы) и если открыть хотя бы тот же Word-файл (doc), там тоже каракули. Почему у меня все читаемо, не понимаю?! Чувствую что все просто, но Прошу в поиск не отправлять - был там, над знаниями не глумиться - у каждого свое, над каждым можно поглумиться, форум двухсловными отписками не загружать. Огромное спасибо за будущую помощь и понимание! |
| Автор: Snowy 19.12.2017, 13:37 |
| Delphi 7 использует 8-битную кодировку, которая зависит от настройки системы пользователя "Язык для неюникодных программ" Как бороться, можно почитать http://forum.vingrad.ru/topic-82093/view-all.html В Delphi 2009 такой проблемы быть не должно. |
| Автор: RedKot 19.12.2017, 20:26 | ||||
Попробовал еще раз в delphi 7 компилировать приведенный выше мною код - в результате русские буквы (слова) полностью читаются, попробовал то же самое с вставками из
Попробовал в delphi 2009 компилировать приведенный выше мною код - русские буквы полностью читаются, с вставками из
Залез еще раз в doc (вордовский) файл через блокнот (AkelPad) - ворд сохраняет свои данные в кодировке UTF-16LE, а делфи 7 и 2009 сохраняет в кодировке windows-1251, ладно бы делфи 7, но почему делфи 2009, там же стринг unicode'рован на сколько я понимаю. Так вот, люди то в интернете говорят о том, что у них отображение русских слов в бинарном файле при использовании делфи 7 иероглифами (то есть, я так понимаю сохранение осуществляется в юникоде), а у меня русскими (я так понимаю - ansi). Может так и должно быть, что русский текст в бинарном файле свободно читаем? Запутался. Snowy, если не затруднит, можно тебя попросить компильнуть код в делфи 7, и посмотреть что получится? Добавлено через 13 минут и 38 секунд кстати, попробовал записать в бинарный файл турецкие слова с их спец символами через делфи 2009, вот что получилось: - в проге вставляю: 'türkçe çeviri' - в бинарном файле получаю: 'turkce ceviri' |
| Автор: RedKot 19.12.2017, 20:44 |
| причем слово 'ceviri' перенесено на следующую строку |
| Автор: Snowy 25.12.2017, 12:49 | ||
| Могу только предложить использовать Delphi 2009+ и не использовать типизированный файл. Скорее всего строки фиксированной длины неюникодные. Используй обычные строки. Вот накидал пример:
|
| Автор: Gwire 1.2.2018, 18:22 | ||
RedKot, можешь попробовать кодировать/декодировать в UTF8.
Чуть не забыл. От чтения глазиками в AkelPad этот файл защищен только отсутствием BOM слова. Если, например, NotePad++ сказать, что кодировка этого файла "UTF-8 (без BOM)", то он снова становится читаем глазиками. Вот такие дела. |
| Автор: Gwire 1.2.2018, 18:41 | ||
| Если нужно маломайски зашифровать данные, то лучше вместо UTF8Encode и UTF8Decode написать свои Encode и Decode. А в них реализовать какой нибудь метод шифрования. Самый простой вместо символов записывать их Hex-кода.
|