cp866<>utf8

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Привет едино мышленники я программист со стажем. занимался системакми как для Роскосмоса так и для Железных дороги (которые сейчас и разробатываю). Я тут не давно сталкнулся с Лазарем и фрее паскалем (просто появилясь свободная минута:)) Последнее время я вижу перспективы Российских разработчиков только в кросс платформености! Если кому интересно моя буквально недавняя реализация кириллици на олснове фрее паскаля прошу обращаться (извините адрес дать так не могу как меня могут не принять серьёзно) если всё пойдет ОК то моя работа будет опублекована! Для кирилицы мой модуль полностью поддерживает кодировки CP1251,CP855,CP866,KOI8-R,KOI8-U,KOI8-RU,KOI8-E,MacCyrillic,KIO-7,DKOI-8,AMIGA-DM. Если кому интересно пишите. У меня много задумок. (использование кодировок прозрачно для программиста).
zzzru
незнакомец
Сообщения: 5
Зарегистрирован: 29.03.2008 02:19:19

Сообщение zzzru »

Есть две проблемы. Имеется две системы: для разработки (ASPLinux 11) и целевая, на которой должен работать разрабатываемый софт (система на базе RedHat 6). На обеих установлена и используется локаль ru_RU.koi8-r. Приложение под GTK1. Среда - Lazarus 0.9.25 и FPC 2.2.1 из SVN. На той системе, где разрабатываю все нормально.

Проблема 1. На целевой системе не отображается русский шрифт на кнопках, в меню и некоторых других элементах управления, а в других же (заголовке окна, надписях) - отображается нормально (пришлось правда явно указать шрифт). Для кнопок шрифт менял, пробовал делать исходники в UTF-8 и компилить с -Fcutf8, пробовал модуль GetText с разными кодировками - везде одно и то же: вместо русских букв - ничего (латиница при этом отображается нормально).

Проблема 2. На целевой системе в элементах управления типа TEdit и TMemo нет никакой реакции на ввод в русской раскладке. Даже событие OnKeyPress не обрабатывается. Обрабатывается только OnKeyDown но при этом переменная Key содержит код не русского, а соответствующего латинского символа на раскладке клавиатуры (то есть не Й, а Q, например). Делал все, что и по первой проблеме.

Сталкивался ли кто-нибудь с таким?

Mr.Smart
Интересно. Выложи, посмотрим твой модуль :)
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Вот дошли руки до выкладывания:)
Ловите модуль перекодировок!
http://transenerkom.ru/src/codepage_manager.zip
Ваши мнения и пожелания шлите в личку или на мыло указано в архиве!
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

V@S писал(а):VirtUX
А можно и мне кинуть указанную утилитку, а то по ссылке не качается.
Спасибо.
Действительно был неверный линк. Сейчас исправлено, можно качать.
Кинуть куда (мыло)? Что (под Win или Lin, с исходниками)?
Аватара пользователя
Attid
долгожитель
Сообщения: 2588
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

про скинуть в личку автору, нечего форум засорять
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Заметил неполную совместимость между UTF-8 и (Windows-1251, IBM-866) в промежутке между $00 и $1F.
Как исправлю - отпишусь.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

VirtUX писал(а):Заметил неполную совместимость между UTF-8 и (Windows-1251, IBM-866) в промежутке между $00 и $1F.

А это разве критично?
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

Mr.Smart
А это разве критично?

Для многих "нет". А у некоторых "да", в частности у меня #$10 и #$11 должны корректно отображатся в текстовом выводе.
unxed
новенький
Сообщения: 31
Зарегистрирован: 25.10.2020 22:38:56

Сообщение unxed »

ViruZ писал(а):Добавил в CodeChanger следующую функцию:
function TCodeChanger.DosToUtf8(var Text: string): boolean;


У вас там табличка неполная. Вот полная, сгенерированная с использованием актуального iconv'а.

128: b := #208#144; 129: b := #208#145; 130: b := #208#146; 131: b := #208#147;
132: b := #208#148; 133: b := #208#149; 134: b := #208#150; 135: b := #208#151;
136: b := #208#152; 137: b := #208#153; 138: b := #208#154; 139: b := #208#155;
140: b := #208#156; 141: b := #208#157; 142: b := #208#158; 143: b := #208#159;
144: b := #208#160; 145: b := #208#161; 146: b := #208#162; 147: b := #208#163;
148: b := #208#164; 149: b := #208#165; 150: b := #208#166; 151: b := #208#167;
152: b := #208#168; 153: b := #208#169; 154: b := #208#170; 155: b := #208#171;
156: b := #208#172; 157: b := #208#173; 158: b := #208#174; 159: b := #208#175;
160: b := #208#176; 161: b := #208#177; 162: b := #208#178; 163: b := #208#179;
164: b := #208#180; 165: b := #208#181; 166: b := #208#182; 167: b := #208#183;
168: b := #208#184; 169: b := #208#185; 170: b := #208#186; 171: b := #208#187;
172: b := #208#188; 173: b := #208#189; 174: b := #208#190; 175: b := #208#191;
176: b := #226#150#145; 177: b := #226#150#146; 178: b := #226#150#147; 179: b := #226#148#130;
180: b := #226#148#164; 181: b := #226#149#161; 182: b := #226#149#162; 183: b := #226#149#150;
184: b := #226#149#149; 185: b := #226#149#163; 186: b := #226#149#145; 187: b := #226#149#151;
188: b := #226#149#157; 189: b := #226#149#156; 190: b := #226#149#155; 191: b := #226#148#144;
192: b := #226#148#148; 193: b := #226#148#180; 194: b := #226#148#172; 195: b := #226#148#156;
196: b := #226#148#128; 197: b := #226#148#188; 198: b := #226#149#158; 199: b := #226#149#159;
200: b := #226#149#154; 201: b := #226#149#148; 202: b := #226#149#169; 203: b := #226#149#166;
204: b := #226#149#160; 205: b := #226#149#144; 206: b := #226#149#172; 207: b := #226#149#167;
208: b := #226#149#168; 209: b := #226#149#164; 210: b := #226#149#165; 211: b := #226#149#153;
212: b := #226#149#152; 213: b := #226#149#146; 214: b := #226#149#147; 215: b := #226#149#171;
216: b := #226#149#170; 217: b := #226#148#152; 218: b := #226#148#140; 219: b := #226#150#136;
220: b := #226#150#132; 221: b := #226#150#140; 222: b := #226#150#144; 223: b := #226#150#128;
224: b := #209#128; 225: b := #209#129; 226: b := #209#130; 227: b := #209#131;
228: b := #209#132; 229: b := #209#133; 230: b := #209#134; 231: b := #209#135;
232: b := #209#136; 233: b := #209#137; 234: b := #209#138; 235: b := #209#139;
236: b := #209#140; 237: b := #209#141; 238: b := #209#142; 239: b := #209#143;
240: b := #208#129; 241: b := #209#145; 242: b := #208#132; 243: b := #209#148;
244: b := #208#135; 245: b := #209#151; 246: b := #208#142; 247: b := #209#158;
248: b := #194#176; 249: b := #226#136#153; 250: b := #194#183; 251: b := #226#136#154;
252: b := #226#132#150; 253: b := #194#164; 254: b := #226#150#160; 255: b := #194#160;
Ответить