powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Неправильная кодировка при чтении из inifiles
19 сообщений из 19, страница 1 из 1
Неправильная кодировка при чтении из inifiles
    #39911986
vlv74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем времени суток
у меня такая проблема.
для настроек работы программы я использую inifiles
пример:
Код: sql
1.
2.
3.
4.
[Connect]
Server=APP56
Base=Mira56
Prefiks=БАЗА1


при чтении английские символы читаются нормально, а вот с русскими проблема
Код: pascal
1.
2.
3.
Conn.Server:=ini.ReadString('Connect','Server','');
Conn.Base:=ini.ReadString('Connect','Base','');
Conn.Prefiks:=ini.ReadString('Connect','Prefiks','');


результат


я так понял что это разные кодировки, но как поменять не знаю
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39911993
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlv74

я так понял что это разные кодировки, но как поменять не знаю


Скорее всего, Вы инифайл сохраняете в кодировке utf8, а читаете в ANSI.
самый простой способ - сохраните инифайл в кодировке Win1251
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912009
vlv74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
файл создаться в этой же программе
Код: sql
1.
2.
3.
4.
5.
  ini:= TIniFile.Create(sfile);
  ini.WriteString('Connect','Server',Conn.Server);
  ini.WriteString('Connect','Base',Conn.Base);
  ini.WriteString('Connect','Prefiks',Conn.Prefiks);
  ini.Free;


при открытии в блокноте всё корректно
а вот при чтении его же, вылезают крокозябы

файл создаётся в формате UTF-8 (Если верить блокноту)
соответственно вопрос меняется
как изменить формат с UTF-8 на String?
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912026
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlv74
пример:
Код: sql
1.
2.
3.
4.
[Connect]
Server=APP56
Base=Mira56
Prefiks=БАЗА1


"Пример" создан блокнотом (руками) или самим приложением?
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912028
vlv74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
само приложение создаёт
а прочитать не может
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912040
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlv74
Код: sql
1.
TIniFile.Create(sfile);


Здесь можно указать кодировку?
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912042
vlv74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если бы я знал, то не спрашивал бы как поменять формат
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912055
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlv74
если бы я знал, то не спрашивал бы как поменять формат

Можно.
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912058
vlv74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как?????
если можно с примером
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912059
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlv74
Доброго всем времени суток
у меня такая проблема.
для настроек работы программы я использую inifiles
пример:
Код: sql
1.
2.
3.
4.
[Connect]
Server=APP56
Base=Mira56
Prefiks=БАЗА1


при чтении английские символы читаются нормально, а вот с русскими проблема
Код: pascal
1.
2.
3.
Conn.Server:=ini.ReadString('Connect','Server','');
Conn.Base:=ini.ReadString('Connect','Base','');
Conn.Prefiks:=ini.ReadString('Connect','Prefiks','');


результат


я так понял что это разные кодировки, но как поменять не знаю

TMemIniFile
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912080
vlv74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
либо лыжи не едут, либо.......
поменял TIniFile на TMemIniFile
ничего не поменялось

вопрос прежний как прочитать из ini файла данные в русской кодировке????

файл создаётся в самой программе
при открытии на просмотр в блокноте всё читается нормально
кодировку блокнот показывает UTF-8

при чтении из этого файла вместо русских букв крокозябы
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912091
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlv74
как?????
если можно с примером

См. 22055669 там у конструктора можно указать кодировку.
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912102
Sinemurius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если текстовый файл UTF8 и имеет сигнатуру UTF, то в inifile он загружается нормально.
Если это обычный ansi файл, то он также загружается нормально.
Если же это UTF8 файл и у него нет сигнатуры UTF, то программа не знает, что это за файл и пытается загрузить его как ansi.
Некоторые текстовые редакторы такие файлы распознают и загружают нормально, но это достаточно сложный алгоритм (если в файле присутствуют такие то сочетания символов в таком соотношении....). И даже такие редакторы распознают эти файлы не со 100 % точностью.

Если не ошибаюсь, то в TIniFile.Create нельзя указать кодировку, в отличие от TStringList.LoadFromFile
Возможно Вам было бы проще использовать TStringList с прямо указанной кодировкой.
Но тогда придется повозиться с разбором секций самостоятельно.
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912154
vlv74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
задача решена

решение:
создание файла сделал не через
Код: sql
1.
2.
3.
4.
      ini:= TMemIniFile.Create(sfile);
      ini.WriteString('Connect','Server','');
      ini.WriteString('Connect','Base','');
      ini.WriteString('Connect','Prefiks','');



а через
Код: sql
1.
2.
3.
4.
5.
6.
7.
      AssignFile(f,sfile);
      Rewrite(f);
      writeln(f,'[Connect]');
      writeln(f,'Server=');
      writeln(f,'Base=');
      writeln(f,'Prefiks=');
      CloseFile(f);


при таком раскладе файл сохраняется в формате ANSI
и при последующих обращениях к нему не требует никаких преобразований
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912175
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39912179
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlv74,
wadman написал, что в конструкторе TMemIniFile можно указать кодировку. Это наверное решило бы вашу проблему.
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39927535
vlv74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё оказалось совсем просто
если создавать inifile так
Код: sql
1.
2.
3.
4.
      ini:= TMemIniFile.Create(sfile);
      ini.WriteString('Connect','Server','');
      ini.WriteString('Connect','Base','');
      ini.WriteString('Connect','Prefiks','');


создаётся в кодировке UTF-8
а если так
Код: sql
1.
2.
3.
4.
      ini:= TMemIniFile.Create(sfile);
      ini.WriteString('Connect','Server','');
      ini.WriteString('Connect','Base','');
      ini.WriteString('Connect','Prefiks','ПРИМЕР');


то в ANSII

т.е.
если при создании файла есть русские буквы, то файл автоматически создаётся в ANSI
если русских букв нет, то в UTF-8
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39927540
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vlv74если русских букв нет, то в UTF-8

Мне чисто любопытно: как ты отличаешь ANSI от UTF-8 в отсутсвие русских букв?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Неправильная кодировка при чтении из inifiles
    #39927543
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Мне чисто любопытно: как ты отличаешь ANSI от UTF-8 в отсутсвие русских букв?

Есть они у него
vlv74 ini.WriteString('Connect','Prefiks','ПРИМЕР');
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Неправильная кодировка при чтении из inifiles
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]