motofan logo
2 страниц V < 1 2        
> 

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

blackbox
сообщение 13.2.2006, 14:17 Закрепленное сообщение!


Control Freak
******

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

Рейтинг: 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
сообщение 6.7.2006, 13:07


Control Freak
******

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

Рейтинг: 627.5



KEO,
Программу протестировал, список обновил.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Random
сообщение 7.7.2006, 4:27


Музыкант
******

Группа: Почётные мотофаны
Сообщений: 1 066
Регистрация: 28.1.2005
Пользователь №: 36 054
Модель телефона: iPhone 4S

Рейтинг: 921



blackbox,
А разве Motorola Explorer с глюком? У меня же языковые файлы там используются...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
blackbox
сообщение 7.7.2006, 12:08


Control Freak
******

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

Рейтинг: 627.5



Random,
Глюки в стандартном диалоге "Browse for Folder" и в настройках.

Сообщение отредактировал blackbox - 7.7.2006, 13:01
Прикрепленное изображение Прикрепленное изображение
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
UNLM-Trojan
сообщение 7.7.2006, 12:36


МотоТроян
***

Группа: Пользователи
Сообщений: 143
Регистрация: 15.10.2005
Из: Украина, Ровно
Пользователь №: 54 658
Модель телефона: V3r
Прошивка: R4515..74R

Рейтинг: 42.5



А вы представьте, как сложно людям с английской виндой, если только на Мотофане программ с глюком (на данный момент) в 2 раза больше чем программ без глюка...

Не сложно догадатся сколько таких программ в нете...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Random
сообщение 14.7.2006, 10:45


Музыкант
******

Группа: Почётные мотофаны
Сообщений: 1 066
Регистрация: 28.1.2005
Пользователь №: 36 054
Модель телефона: iPhone 4S

Рейтинг: 921



blackbox,
Проверь новую версию.
Вот глюк в настройках я немного не понял. Вроде использую языковой файл. И загружаю ту строчку из него.
А в меню, где выбор режима OBEX/P2K есть такой глюк?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
blackbox
сообщение 14.7.2006, 11:51


Control Freak
******

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

Рейтинг: 627.5



Random, проверил - в "Browse for
Folder" нормально, а в настройках и в меню выбора режима то же самое.
Впрочем, если не использовать русский, то все нормально.
Прикрепленное изображение

off_topic; OBEX режим не работает на L7 - ни по кабелю, ни по BT.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Starov
сообщение 23.7.2006, 20:08


Интересующийся
**

Группа: Пользователи
Сообщений: 86
Регистрация: 27.11.2004
Пользователь №: 23 384
Модель телефона: MPx200
Прошивка: WM5 RC3

Рейтинг: 11.5



Пардон конечно, но DKMotoCam написан не на Delphi
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
blackbox
сообщение 23.7.2006, 20:17


Control Freak
******

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

Рейтинг: 627.5



Starov,
Ну не Delphi, так C++ Builder.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Ant-ON
сообщение 27.7.2006, 22:08


Гуру
******

Группа: Разработчики
Сообщений: 1 329
Регистрация: 22.8.2005
Из: Екатеринбург
Пользователь №: 49 304
Модель телефона: N5 / Defy / VE66
Прошивка: CM12 / CM10 / PM2
Финалист Конкурса 2010

Рейтинг: 1850



Спецально для проверки своих программ на глюки я установил в VMware чисто английский Windows XP. После установки я зашел в "Панель Управления" > "Языки и региональные стандарты" ("Control Panel" > "Shortcut to Regional and Language Options") и на всех вкладках в выподающих спсках установил Русский (Russia) и программы, которые указаныв списке как с глюком у меня нормально запустились!

Но вновых версиях своих программ я всеровно добавлю пару строк исправляющих эту ошибку(по способу n0wheremany).
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
blackbox
сообщение 27.7.2006, 22:15


Control Freak
******

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

Рейтинг: 627.5



Ant-ON, читай внимательно первый пост!
Я же писал:
Цитата
если значение для настроек языка и стандартов поставить "Россия", проблема исчезает, но меня такое решение не устраивает, т.к. даты начинают отображаться на русском.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Просьба Всем Дельфистам Зайти Сюда, По поводу кодировок · Ломаем и строим! · Forum
 

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

 



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

Форум живёт: