Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Чтение данных из файла на VBA.

Автор Марбол, ноября 9, 2013, 21:28

0 Пользователи и 1 гость просматривают эту тему.

Марбол

Здравствуйте!

Недавно я попробовал встроить в свою программу чтение информации из файла .txt и столкнулся с тем, что при этом нормально читаются только символы ASCII. Между тем, при всех других операциях со строковыми переменными, не связанных с файлами, символы Юникода воспринимаются без проблем. Теперь я пытаюсь выяснить: имеет ли смысл добиваться нужного чтения юникодовских символов из файла, или этого не получится добиться на VBA?

Cruach

Если я правильно понимаю проблему, то можно попробовать воспользоваться vbFromUnicode для перекодировки на лету, так сказать.
מלפפון, בבקשה

Python

А сами текстовые файлы в какой кодировке — utf-8 или восьмибитной? Скорее всего, проблема в несоответствии кодировки файла и кодировки по умолчанию, используемой в VBA при чтении с файла. Что получается вместо нечитаемых символов — ромбики со знаком вопроса (чтение 8-битной кодировки как utf-8), или поток двухбуквенных комбинаций (чтение utf-8 как 8-битной)?
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Марбол

Здравствуйте!

Цитата: Cruach от ноября  9, 2013, 22:42
Если я правильно понимаю проблему, то можно попробовать воспользоваться vbFromUnicode для перекодировки на лету, так сказать.

Интересно! А где именно это свойство (или аргумент?) указывается?

Цитата: Python от ноября 10, 2013, 17:16
А сами текстовые файлы в какой кодировке — utf-8 или восьмибитной? Скорее всего, проблема в несоответствии кодировки файла и кодировки по умолчанию, используемой в VBA при чтении с файла. Что получается вместо нечитаемых символов — ромбики со знаком вопроса (чтение 8-битной кодировки как utf-8), или поток двухбуквенных комбинаций (чтение utf-8 как 8-битной)?

Результат зависит от того, в какой кодировке я сохраняю исходный читаемый файл .txt: в том порядке, как Вы перечислили, знаки вопроса (без ромбиков) получаются при кодировке ANSI (в вопросе я ошибочно написал ASCII), а двухбуквенные комбинации - при кодировках UTF-8, Unicod.

Python

Знаки вопроса на месте символов юникода появляются, скорее всего, еще при сохранении файла в ansi-кодировке — она непригодна для символов, не входящих (в случае русской локали) в windows-1251 — т.е., всех кроме основной латиницы и современных славянских кириллиц (если я правильно понял, знаки вопроса на месте русских букв не появляются?).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Ильич

Цитата: Марбол от ноября  9, 2013, 21:28или этого не получится добиться на VBA?
Всё можно сделать, знать бы только, что же вы хотите сделать и с чем.
Все, кто пытался Вам помочь, пытаются это угадать.
Для начала заметим, что в файле вообще никаких символов нет. Символы это уже ваша интерпретация содержимого байтов файла.



Марбол

Здравствуйте!

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

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр