Показать сообщение отдельно
  #1  
Старый 16.12.2013, 12:35
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию Delphi. Проблема с кодировкой не юникод данных на английской локали

В общем давно известная проблема, когда дельфи приложение запускается на винде с английской или другой локалью и пытается подгружать данные с Ansi файлов с русским текстом и получает заместо нормальных букв - знаки вопроса (???? ??) кракозябры такие

Возможно кто-то придумал как решить? На других конференциях нашел способ чтобы ресурсы которые уже в программе отображались нормально на юникод шрифтах (Tahoma) с чарсетом RUSSIAN_CHARSET

Код:
  SetThreadLocale(1049);
  Application.Initialize;

я так понимаю что он пытается при загрузке данных из файлов, представить в cp_1252 данные если в реестре стоит это значение

Вариант исправления локали в реестре не подходит, хотя работает
Код:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1251"="c_1251.nls"
"1252"="c_1251.nls"
перезагрузится после исправления

не буду же я каждому пользователю объяснять кто пользуется английской виндой что делать?

В общем прошу кто сталкивался с такой проблемой и нашел решение, подмогнуть
Как заставить программу игнорировать настройки реестра и кодировать в соответствии с CP_1251
Ответить с цитированием