Программы наших многоуважаемых разработчиков на Дельфи при определенном сочетании системного языка и региональных настроек работают некорректно, а именно отображают знаки вопроса вместо русских букв.
Проявляется это в следующем случае:
Обычно в таких случаях рекомендуют в реестре вручную присвоить кодовой странице 1252 значение 1251. Это помогает, но побочный эффект этого способа в том, что там, где должны были быть "кракозяблы" типа àãçêñ, отображаются русские символы.
Также замечено, что если значение для настроек языка и стандартов поставить "Россия", проблема исчезает, но меня такое решение не устраивает, т.к. даты начинают отображаться на русском.
После долгих ковыряний я пришел к выводу, что причиной проблемы, скорее всего, является баг в Дельфи при преобразовании строк в кодировках UTF-8 и UTF-16. Почему-то при переводе этих строк в ANSI используется не системная кодовая страница (язык для не Unicode-программ), а настройка языка и стандартов.
Во всех программах, в которых наблюдается баг, строки в формах хранятся в UTF-8 и UTF-16. В тех программах, где используется win1251, бага нет.
n0wheremany нашел способ решения проблемы, за что ему большое спасибо!
В код программы необходимо добавить следующее:
program Project1;
uses
Windows,
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
SetThreadLocale(1049); // <<<<<<<<<
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Нижеприведенный патч остается здесь как альтернативное средство, на случай если разработчики по тем или иным причинам не исправят свои программы.
Чтобы избавиться от этого глюка, я написал маленький патч, конвертирующий строки в формах в кодировку win1251. Имейте ввиду, что я в глаза не видел среду разработки Delphi и понятия не имею, могут ли быть побочные эффекты у моей программы. Может этот патч пригодится кому-то еще.
Внимание: патч не умеет работать с упакованными exe файлами (например, UPX, Aspack, PECompact и т.п.), для использования патча предварительно распакуйте программу (в случае UPX это можно сделать самим упаковщиком командой upx -d program.exe, другие распаковщики можно найти в интернете по запросу "exe unpackers").
Несмотря на этот патч, все-таки хотелось бы, чтобы разработчики внесли изменения в свои программы самостоятельно.
Ниже идет список программ с глюком и без (имеются ввиду только программы на Delphi с русским интерфейсом).
Программы с глюком
P2KTools.....................0.8.6.406....Bezols
Theme Creator................2.2.3.4......Bezols
MotoSMSManager...............3.3..........Udman
MotoFlashExplorer............1.2..........Udman
RecoverSMS...................???..........Udman
MotoPatchMaker...............4.1..........Udman
PBMoto.......................1.3.101......Deamon
PBTools......................???..........Vovan_mail
TFlash info..................0.2..........Dimafeng
P2KSweeper...................0.0.3........Dimafeng
MotoFan's Wallpaper Creator..1.5..........Splash.666
Motorola Wallpaperz Creator..2.2..........Splash.666
OpCode Maker.................3.0.0.0......KEO
P2KStyle.....................0.6.0.0......KEO
P2K Voice Button.............0.2..........G.off
P2kCleaner...................2.6.1........ZeatooL
P2kPat.......................1.0..........ZeatooL
Motorola Explorer............0.94 Beta....Random
IMY-Editor...................1.0.0.0.1....Serg c650
P2k-MultiFoto................1.0.0.0.3....Serg c650
iTap Dictionary Editor.......1.14.........kENOD
MotoLoader...................1.0.0.4......Ant-ON
P2KFotoFan...................1.0.0.3......Ant-ON
P2kEMSView...................4.3..........Dimka
Программы без глюка
FullJava.....................1.5..........Eugene
P2KText......................2.0.1........Agent 707
Firm_name....................0.0.0.1......vassio
Syssound.....................4.0.2........vassio
MotoKlava....................2.3..........KosteT
UniMoto......................2.1.0.101....n0wheremany
GP Tables Editor Standard....1.0..........Synergy
MotoKeyboard.................1.0.0.5......Serg c650
P2k-Action...................1.0.0.8......Serg c650
PhoneFotoGallery (OBEX)......2.0.0.0......KEO
Списки будут пополняться. Следите за обновлениями.
Сообщение отредактировал blackbox - 27.7.2006, 22:16
Проявляется это в следующем случае:
- установлена нелокализованная (английская) Windows;
- настройки языка и стандартов установлены НЕ русские;
- язык для не Unicode-программ установлен русский
Обычно в таких случаях рекомендуют в реестре вручную присвоить кодовой странице 1252 значение 1251. Это помогает, но побочный эффект этого способа в том, что там, где должны были быть "кракозяблы" типа àãçêñ, отображаются русские символы.
Также замечено, что если значение для настроек языка и стандартов поставить "Россия", проблема исчезает, но меня такое решение не устраивает, т.к. даты начинают отображаться на русском.
После долгих ковыряний я пришел к выводу, что причиной проблемы, скорее всего, является баг в Дельфи при преобразовании строк в кодировках UTF-8 и UTF-16. Почему-то при переводе этих строк в ANSI используется не системная кодовая страница (язык для не Unicode-программ), а настройка языка и стандартов.
Во всех программах, в которых наблюдается баг, строки в формах хранятся в UTF-8 и UTF-16. В тех программах, где используется win1251, бага нет.
n0wheremany нашел способ решения проблемы, за что ему большое спасибо!
В код программы необходимо добавить следующее:
Код
program Project1;
uses
Windows,
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
SetThreadLocale(1049); // <<<<<<<<<
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Нижеприведенный патч остается здесь как альтернативное средство, на случай если разработчики по тем или иным причинам не исправят свои программы.
![]() ![]() |
Чтобы избавиться от этого глюка, я написал маленький патч, конвертирующий строки в формах в кодировку win1251. Имейте ввиду, что я в глаза не видел среду разработки Delphi и понятия не имею, могут ли быть побочные эффекты у моей программы. Может этот патч пригодится кому-то еще.
Внимание: патч не умеет работать с упакованными exe файлами (например, UPX, Aspack, PECompact и т.п.), для использования патча предварительно распакуйте программу (в случае UPX это можно сделать самим упаковщиком командой upx -d program.exe, другие распаковщики можно найти в интернете по запросу "exe unpackers").
Несмотря на этот патч, все-таки хотелось бы, чтобы разработчики внесли изменения в свои программы самостоятельно.
Ниже идет список программ с глюком и без (имеются ввиду только программы на Delphi с русским интерфейсом).
Программы с глюком
P2KTools.....................0.8.6.406....Bezols
Theme Creator................2.2.3.4......Bezols
MotoSMSManager...............3.3..........Udman
MotoFlashExplorer............1.2..........Udman
RecoverSMS...................???..........Udman
MotoPatchMaker...............4.1..........Udman
PBMoto.......................1.3.101......Deamon
PBTools......................???..........Vovan_mail
TFlash info..................0.2..........Dimafeng
P2KSweeper...................0.0.3........Dimafeng
MotoFan's Wallpaper Creator..1.5..........Splash.666
Motorola Wallpaperz Creator..2.2..........Splash.666
OpCode Maker.................3.0.0.0......KEO
P2KStyle.....................0.6.0.0......KEO
P2K Voice Button.............0.2..........G.off
P2kCleaner...................2.6.1........ZeatooL
P2kPat.......................1.0..........ZeatooL
Motorola Explorer............0.94 Beta....Random
IMY-Editor...................1.0.0.0.1....Serg c650
P2k-MultiFoto................1.0.0.0.3....Serg c650
iTap Dictionary Editor.......1.14.........kENOD
MotoLoader...................1.0.0.4......Ant-ON
P2KFotoFan...................1.0.0.3......Ant-ON
P2kEMSView...................4.3..........Dimka
Программы без глюка
FullJava.....................1.5..........Eugene
P2KText......................2.0.1........Agent 707
Firm_name....................0.0.0.1......vassio
Syssound.....................4.0.2........vassio
MotoKlava....................2.3..........KosteT
UniMoto......................2.1.0.101....n0wheremany
GP Tables Editor Standard....1.0..........Synergy
MotoKeyboard.................1.0.0.5......Serg c650
P2k-Action...................1.0.0.8......Serg c650
PhoneFotoGallery (OBEX)......2.0.0.0......KEO
Списки будут пополняться. Следите за обновлениями.
Сообщение отредактировал blackbox - 27.7.2006, 22:16