|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.02.2012, 10:51 | #1 |
Регистрация: 19.03.2009
Сообщений: 8
|
Как правильно прочитать файл с кодировкой UTF-8
Всем привет!
Имеется файл с кодировкой UTF-8, нужно по очереди считывать строки и в дальнейшем с ними работать. Проблема в том, что русские буквы считываются кракозяблями. Считываю так: AssignFile - Reset - readln В результате русские буквы получаются так: п»їРЎРђРџР¤РР* Как правильно считывать? Файл для теста прилагаю. |
07.02.2012, 10:56 | #2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
utf8ToAnsi или UTF8Encode
|
07.02.2012, 11:31 | #3 |
Регистрация: 19.03.2009
Сообщений: 8
|
Спасибо, почти получилось. При считывании первой строки вначале появляется вопросительный знак, все последующие строки читает нормально.
?САПФИР NAQST8MVC АМЕТИСТ NRPXTXL15 Пробовал по разному, все равно, даже без перекодировки, вначале появляются ненужные символы. Вот одна и таже строка стоит первой и второй в файле. АМЕТРРЎРў NRPXTXL15 АМЕТРРЎРў NRPXTXL15 |
07.02.2012, 11:44 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Далеко не все символы из UTF-8 можно перевести в 1251. В начале первой строки видимо и стоит какая-то бяка. Возможно длина текста в файле или что-то другое
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
07.02.2012, 12:00 | #5 |
Регистрация: 19.03.2009
Сообщений: 8
|
Так по разному пробовал, и строки местами менял, и символы первые менял, все равно первая строка неправильно считывается.
|
07.02.2012, 12:23 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Первые три символа вашего файла никак не переведутся в 1251. Если они всегда там - убирайте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
07.02.2012, 12:45 | #7 |
Регистрация: 19.03.2009
Сообщений: 8
|
Действительно, это сигнатура UTF-8, похоже придется вручную ее убирать.
|
08.02.2012, 12:19 | #8 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
Её не убирать, а проверять надо. Не нужно всё без разбору гнать через utf8ToAnsi (или что вы там использовали). Конвертировать нужно только те файлы, у которых указан BOM.
UTF-8, кстати, - не единственный вариант, в котором может быть текстовый файл.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
08.02.2012, 12:31 | #9 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
P.S. Вообще, если файл разовый, то можно просто его перевести в ANSI и всё.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемы с кодировкой UTF-8 | Prontit | Общие вопросы Delphi | 2 | 29.07.2011 18:30 |
Как правильно прочитать фаил(.txt) в командной строке? | Призрак286397 | C++ Builder | 3 | 15.06.2010 18:10 |
Помогите с записью строк в фаил с кодировкой UTF-8 | Виталий Серов | Общие вопросы Delphi | 1 | 26.03.2009 03:22 |
Xml, как правильно прочитать | Parcenson | Общие вопросы Delphi | 0 | 02.09.2008 06:29 |