motofan logo
> 

Просьба Всем Дельфистам Зайти Сюда, По поводу кодировок

blackbox
сообщение 13.2.2006, 14:17


Control Freak
******

Группа: Разработчики
Сообщений: 838
Регистрация: 23.9.2005
Пользователь №: 52 431
Модель телефона: iPhone
Прошивка: 2.2.1

Рейтинг: 627.5



Программы наших многоуважаемых разработчиков на Дельфи при определенном сочетании системного языка и региональных настроек работают некорректно, а именно отображают знаки вопроса вместо русских букв.
Проявляется это в следующем случае:
  1. установлена нелокализованная (английская) Windows;
  2. настройки языка и стандартов установлены НЕ русские;
  3. язык для не 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.

Нижеприведенный патч остается здесь как альтернативное средство, на случай если разработчики по тем или иным причинам не исправят свои программы.
Прикрепленный файл LangPatch.zip   ( 2.28 килобайт ) Кол-во скачиваний: 298


Чтобы избавиться от этого глюка, я написал маленький патч, конвертирующий строки в формах в кодировку 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
Прикрепленный файл LangPatch.zip   ( 2.28 килобайт ) Кол-во скачиваний: 298
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить

Сообщений в этой теме
blackbox   Просьба Всем Дельфистам Зайти Сюда   13.2.2006, 14:17
Udman   А что именно в файле ты меняешь чтобы все было ок?   13.2.2006, 15:01
blackbox   Меняю RUSSIAN_CHARSET на DEFAULT_CHARSET и конвер...   13.2.2006, 17:22
n0wheremany   Я исправил ;) . Но теперь это не важно она закры...   13.2.2006, 16:56
KEO   интересно... 2 моих проги работают нормально, а 2 ...   13.2.2006, 19:08
KEO   Кстати, P2KText не моя программа, а Agent 707... п...   13.2.2006, 19:08
blackbox   KEO, Только что проверил - в P2KStyle тоже есть г...   13.2.2006, 19:52
vassio   blackbox, проверь Syssound   13.2.2006, 20:27
blackbox   vassio, Все в норме. Кстати, какая у тебя версия ...   13.2.2006, 21:28
n0wheremany   Ну это само сабой. Просто при создании программы...   14.2.2006, 6:44
0vZ   У меня в motoTunes по просьбе иностранцев (в частн...   14.2.2006, 15:55
blackbox   0vZ, с твоей прогой все в порядке, она не попала в...   14.2.2006, 20:33
Dosian   blackbox Проверь мою, пожалуйста (iMoto MICRO)... ...   5.4.2006, 1:11
blackbox   Dosian, Все нормально, т.к. у тебя не используются...   5.4.2006, 1:21
Dosian   Я знаю про этот "глюк", пострараюсь на...   6.4.2006, 8:42
aligatro   blackbox, Этот глюк лечится если поменять стандар...   5.4.2006, 3:41
blackbox   Разумеется, если поменять стандарты, глюк лечится...   6.4.2006, 11:56
n0wheremany   Значит так дельфисты... Все сюда. Что нормально р...   8.4.2006, 19:25
Vovan_mail   :) begin SetThreadLocale(1049); Это дол...   15.4.2006, 13:48
blackbox   Vovan_mail, Сплошные знаки вопроса. И ты забыл в ...   15.4.2006, 14:00
Vovan_mail   чтобы размер уменьшить   15.4.2006, 14:13
blackbox   Я знаю, для чего нужен UPX, просто та версия, кот...   15.4.2006, 18:20
n0wheremany   В оригинале (в распакованном виде) это прокатит,...   15.4.2006, 14:26
Vovan_mail   :) Архив положил с открытыми ресурсами. //-------...   15.4.2006, 17:02
Vovan_mail   :) Это ещё не совсем хитрым образом. Upx нужен...   15.4.2006, 19:57
blackbox   Проверка надписи на кнопке - это плохой стиль про...   15.4.2006, 20:18
n0wheremany   Ну это ошибка програмиста. Такого ни вкоем случа...   15.4.2006, 20:10
Vovan_mail   Согласен, но есть случаи когда это необходимо де...   15.4.2006, 20:17
Vovan_mail   blackbox, может это правила плохого тона, но что с...   15.4.2006, 21:33
blackbox   Vovan_mail, делай так: begin if status=close the...   15.4.2006, 21:38
Vovan_mail   Если по щелчку на той самой кнопке надо поменять е...   16.4.2006, 6:50
blackbox   Vovan_mail, Использовать текст кнопки для управле...   16.4.2006, 14:41
MegaBeaver   о великие гуру кодинга, прога из PBMoto13101.rar п...   7.6.2006, 12:40
blackbox   MegaBeaver, странно, что мой патч у тебя не зараб...   7.6.2006, 13:35
MegaBeaver   Спасибо! Запустилось с кириллицей, супер. Так...   7.6.2006, 13:43
blackbox   MegaBeaver, ты наверное забыл распаковать UPX-ом ...   7.6.2006, 13:48
Daniel   А у меня проблемма следующего характера. На Label ...   8.6.2006, 17:56
blackbox   Daniel, Попробуй переключить раскладку клавиатуры...   8.6.2006, 19:17
n0wheremany   2Daniel Попробуй мой код. Кот на 2 странице. ЗЫ ...   9.6.2006, 7:13
KEO   Ув. blackbox, вышла в свет новая версия программы...   5.7.2006, 5:43
blackbox   KEO, Программу протестировал, список обновил.   6.7.2006, 13:07
Random   blackbox, А разве Motorola Explorer с глюком? У м...   7.7.2006, 4:27
blackbox   Random, Глюки в стандартном диалоге "Browse ...   7.7.2006, 12:08
UNLM-Trojan   А вы представьте, как сложно людям с английской ви...   7.7.2006, 12:36
Random   blackbox, Проверь новую версию. Вот глюк в настрой...   14.7.2006, 10:45
blackbox   Random, проверил - в "Browse for Folder...   14.7.2006, 11:51
Starov   Пардон конечно, но DKMotoCam написан не на Delphi   23.7.2006, 20:08
blackbox   Starov, Ну не Delphi, так C++ Builder.   23.7.2006, 20:17
Ant-ON   Спецально для проверки своих программ на глюки я у...   27.7.2006, 22:08
blackbox   Ant-ON, читай внимательно первый пост! Я же пи...   27.7.2006, 22:15

Просьба Всем Дельфистам Зайти Сюда, По поводу кодировок · Ломаем и строим! · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 30.7.2025, 11:38

Форум живёт: