Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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

Последний раз редактировалось hilaryon, 16.12.2013 в 12:38.
Ответить с цитированием
  #2  
Старый 16.12.2013, 12:56
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от hilaryon
В общем давно известная проблема, когда дельфи приложение запускается на винде с английской или другой локалью и пытается подгружать данные с Ansi файлов с русским текстом и получает заместо нормальных букв - знаки вопроса (???? ??) кракозябры такие
Где получает? Подробнее пожалуста.
Цитата:
Сообщение от hilaryon
Возможно кто-то придумал как решить? На других конференциях нашел способ чтобы ресурсы которые уже в программе отображались нормально на юникод шрифтах (Tahoma) с чарсетом RUSSIAN_CHARSET
Желательно что-бы все элементы управления на форме имели в свойстве Font.Charset:=RUSSIAN_CHARSET. Особенно это актуально было в WindowsNT4, но начиная с Windows2000 эта проблема вроде была решена.
Цитата:
Сообщение от hilaryon
Код:
  SetThreadLocale(1049);
  Application.Initialize;

я так понимаю что он пытается при загрузке данных из файлов, представить в cp_1252 данные если в реестре стоит это значение
Кто пытается?
Цитата:
Сообщение от hilaryon
Как заставить программу игнорировать настройки реестра и кодировать в соответствии с CP_1251
Кто, в каком случае и что кодирует-то?
Ответить с цитированием
  #3  
Старый 16.12.2013, 13:00
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию

Программа в процессе работы берет данные из текстового файла (текст на русском языке) при их выводе получается черти что
Изображения
Тип файла: png 1.png (41.1 Кбайт, 19 просмотров)
Ответить с цитированием
  #4  
Старый 16.12.2013, 13:03
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию

Программа в процессе работы берет данные из текстового файла (текст на русском языке) при их выводе получается черти что

1.png

на картинке все данные чтобы были подгружены с файлов получились вот такие, а все что были назначены в программе заранее остались нормальными

Последний раз редактировалось hilaryon, 16.12.2013 в 13:06.
Ответить с цитированием
  #5  
Старый 16.12.2013, 13:06
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от hilaryon
Программа в процессе работы берет данные из текстового файла (текст на русском языке) при их выводе получается черти что
У элементов управления которые отображают крякозябры установлено значение Font.Charset:=RUSSIAN_CHARSET ?
Какая версия Delphi?
Стандартные компоненты используются?
Ответить с цитированием
  #6  
Старый 16.12.2013, 13:09
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
У элементов управления которые отображают крякозябры установлено значение Font.Charset:=RUSSIAN_CHARSET ?
Какая версия Delphi?
Стандартные компоненты используются?

Да, RUSSIAN_CHARSET, уже по разному пробовал, и шрифты менял и чарсеты...

Пробовал на XE3 и XE5, результат однозначно тот же самый. компоненты используются разные, но вывод одинаково паршивый хоть в стандартных хоть в alphaskins
Ответить с цитированием
  #7  
Старый 16.12.2013, 13:10
hilaryon hilaryon вне форума
Прохожий
 
Регистрация: 19.11.2010
Сообщения: 18
Репутация: 10
По умолчанию

2.png

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

Последний раз редактировалось hilaryon, 16.12.2013 в 13:13.
Ответить с цитированием
  #8  
Старый 16.12.2013, 13:29
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от hilaryon
Да, RUSSIAN_CHARSET, уже по разному пробовал, и шрифты менял и чарсеты...

Пробовал на XE3 и XE5, результат однозначно тот же самый. компоненты используются разные, но вывод одинаково паршивый хоть в стандартных хоть в alphaskins
Сделай небольшой пример где эта проблема проявляется (только без дополнительных компонентов) - я посмотрю у себя на английской Windows.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:38.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter