Форум » » Русские шрифты в редакторе Simpl+ » Ответить

Русские шрифты в редакторе Simpl+

Вячеслав: Подскажите, как лучше поступить. Поменял ноутбук, в simpl+ комментарии написанные на русском теперь крокозябрами. Привычная смена шрифта на Courier в Edit->Preference не помогает. Может есть смысл перенести шрифт windows с другого ПК или в реестре что то поправить можно?

Ответов - 28, стр: 1 2 All

DmitriiP: гляньте в Региональных настройках. многие проги лечатся от "крокозябрами" вот этим:

Вячеслав: У меня там Русский (Россия) стоит. Такое ощущение, что Simpl использует не системные юникод шрифты, а какие то свои без русских символов.

Вячеслав: Разобрался. Может кому пригодится. Надо было во всех ключах реестра тоже поставить значение c_1251.nls , а не только для 1251 и 1252 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage] "1250"="c_1251.nls" "1251"="c_1251.nls" "1252"="c_1251.nls" "1253"="c_1251.nls" "1254"="c_1251.nls" "1255"="c_1251.nls" Те что зеленым цветом были изначально, но видимо этого не достаточно. Для вступления изменений в силу не забудьте перезагрузиться после редактирования реестра.


DmitriiP: главное чтоб, это потом гдето в другом месте не вылезло с обратным эффектом...

Игорь K.: Дался вам этот Cyrrilic....

Вячеслав: Так в России живем. Дело даже не в комментариях. Модуль использует строковые кириллические константы выдаваемые наружу и их тоже понятнее наблюдать в читаемом виде. Особенно когда позже вспоминаешь что же там была за фраза.

Вячеслав: После обновы опять шрифты слетели. (( В реестре изменений нет. Опять что то надо колдовать.

eoulianov: Выберите шрифт FixedSys))

Вячеслав: Спасибо, помогло. Но шрифт ужасный.

kislez2015: Подскажите, а если у меня в Simpl+ тестовые выходы задуманы, как выдающие русский язык (и они отображаются русскими) - но на Хпанели краказябры... При этом никакие модули конвертирующие не помогают, что нужно делать?

DmitriiP: глянтье эту тему на Х-панели вместо кириллицы - иероглифы (CORE3 Standart Theme)

kislez2015: DmitriiP эти конверторы тоже не помогают... я еще заметил что русский текст из Serial IO и из Simpl+ абсолютно разный, не знаю какая в симпл+ кодировка...

DmitriiP: попробуйте разные варианты с #ENCODING_ASCII #ENCODING_UTF16 в Simpl+ или киньте ваш модуль, может найдётся решение

DmitriiP: попробуйте следующее 1) в Simpl+ #ENCODING_ASCII 2) STRING_OUTPUT этого модуля -> Convert to UTF-16 (В режиме "Pass Thru Mark as UTF-16") -> на TP

eoulianov: kislez2015, гляньте http://crestron.borda.ru/?1-0-0-00001258-000-0-0-1485907021 Вы на старую XPANEL или на новую XPANEL 2.0 Smart Graphics выводите? там разное нужно генерировать.

kislez2015: eoulianov вывожу на новую На тачпанель прямой text_join из simpl+ русский отображается нормально, на Xpanel криво

Вячеслав: Crestron это кладезь возможных неприятностей с национальными языками. Последняя фишка, из + модуля строковый выход (Makestring(OUT$,"%s%u","ТЕСТ",GetLastModifiedArrayIndex()) выдает символы в UTF16, а цифры в ASCII и никакие директивы на это не влияют. Т.е. на выходе каша из двухбайтных и однобайтных символов. И никакой нормальный внешний конвертор из этого зоопарка корректно преобразовать уже не сможет. Приходится внутри модуля конвертировать все в ASCII, а уж потом снаружи из ASCII в UTF16(WEB). Но в общем и целом все эти проблемы решаемы.>> Посмотрите в дебагере в HEX формате, как формируется выходная строка и можно будет понять, что с этим делать. (киньте в форум что хотелось написать и что получилось в дебагере, посмотрим)

Вячеслав: Почитал ваше последнее сообщение. Так и правда надо просто подобрать конвертор, раз на тачпанели тот же текст корректно отображается. У меня на XPANEL 2.0 Smart Graphics вывожу известным конвертором ASCIItoUTF16 (процессор 3 серии). Т.е. в варианте &#x... (я его называю UTF16 for WEB). Но это если у Вас в дебагере текст выходит в расширенных ASCII (они же Windows-1251/cp1251). Если в UTF16, то сначала в ASCII конвертируйте, потом в UTF16 for WEB.

DmitriiP: выложите пример, что не работает.... обе строки в дебагере одинаковые , при этом выводятся по разному и на ASCII цифры пофиг + никаких &#x: \x04\x22\x04\x35\x04\x41\x04\x42\x04\x3E\x04\x32\x04\x4B\x04\x39\x20\x31\x20\x32\x32\x20\x04\x42\x04\x35\x04\x3A\x04\x41\x04\x42 #ENCODING_ASCII DIGITAL_INPUT send; STRING_OUTPUT Out_CP1251; PUSH send { Makestring(Out_CP1251,"%s %u %d %s","Тестовый",GetLastModifiedArrayIndex(), 22,"текст"); } это идёт результат

Вячеслав: Да у меня то все работает, только это костыли. (проблема у kislez2015) Собственно вы сами привели пример: \x04\x22\x04\x35\x04\x41\x04\x42\x04\x3E\x04\x32\x04\x4B\x04\x39\x20\x31\x20\x32\x32\x20\x04\x42\x04\x35\x04\x3A\x04\x41\x04\x42 В каком формате эта строка??? Винегрет из UTF16 и ASCII. Цифры и пробелы в UTF16 должны кодироваться тоже двумя байтами. Поправьте, если не прав. Что касается &#x, они должны быть на out_text1 для русских символов или у Вас не так? А конвертер зачетный, раз учитывает винегрет по входу.

DmitriiP: обе строки test_text и out_text1 эдентичные 1:1 в дебагере, никаких &#x после "Pass Thru Mark as UTF-16" нет, результат вывода строк разный. у крестрона полный бардак с кодировками. Вячеслав пишет: (киньте в форум что хотелось написать и что получилось в дебагере, посмотрим)

Вячеслав: Да ситуация с одинаковым видом в дебагере и разной интерпретацией тоже сталкивался. Вроде смотришь, ну чем не UTF, а не работает. Пропускаешь через двойное преобразование через ascii, то же самое на выходе но работает. В самом деле поверишь в существование невидимых глазу дебагера каких то метаданных типа <meta http-equiv=Content-Type content="text/html;charset=UTF-16"> которые влияют на дальнейшее восприятие символов программой. Странно, что всякие директивы вида: #ENCODING_ASCII #ENCODING_UTF16 Parameter Encoding Type никаких результатов не давали. А может ждал видимого результата, а он на уровне метаданных. А "всеобъемлющий" HELP на штатные конверторы мог бы содержать хотя бы фразу "It `s Magic" Таки дождемся, что kislez2015 выложит из дебагера. Может и правда штатный модуль с Pass Thru Mark as UTF-16 творит "чудеса".

eoulianov: \x04\x22\x04\x35\x04\x41\x04\x42\x04\x3E\x04\x32\x04\x4B\x04\x39\x20\x31\x20\x32\x32\x20\x04\x42\x04\x35\x04\x3A\x04\x41\x04\x42 - не винегрет, а реальные 16-битные символы, просто debugger показывает их так. Если у символа код больше 255, то дебаггер покажет его в два байта, например \u0422 показан тут как \x04\x22, если меньше но не 0, то будет показано как один символ, например \u0020 есть \x20, а если окажется код 0, то остаток строки не покажет вовсе. В этой строке нет ни UTF-16, ни UTF-8, в ней ПРОСТО один за другим символы Unicode. и если нужно их выводить на Smart Graphics 2.0, то символы с кодом до 255 нужно выводить как есть, а больше - через HTML character entity references, всё будет работать. Никакие заклинания #ENCODING_ASCII и meta http-equiv не помогут с кириллицей. kislez2015 вам надо было бы ешё намекнуть, что и контроллер используется 2-й серии) Раз на обычную панель напрямую с S+ гонит кириллицу правильно. Всё что прозводится в S+ в этом случае будет в Windows-1251, и конвертор вам нужен WIN1251->HTML. В нём нужно кириллические символы из Windows-1251 выводить через HTML character entity references, а остальные - как есть, и всё запашет. Ну, пока не появятся слишком длинные строки.

Вячеслав: Интересно, какова длина строки len() при таком подставе"подходе" отображения дебагером символов. Символ \x00\x31 ("1") выводится как \x31. Длина его при это будет 2 байта или 1????

DmitriiP: может кому и сгодится , сделал для себя (для теста), работает только с 3-ей серией (использует S#) P.S. также там есть 2 функции для HEX Выводит только младшие байты trace("%s\n",StringEncode.StringToHexSimplSharpString(In_Unicode)); Выводит в формате 2 байт trace("%s\n",StringEncode.UnicodeStringToHexSimplSharpString(In_Unicode));

DmitriiP: cp1251 <-> UNICODE чуть более разширинная версия + добавил StringEncode.CP1251StringToHTMLEntitiesString(); + добавил 4 .usp модуля P.S. Все строки на скрине идут нарямую с модулей на входы ТП P.S.2 Единственные символы с которым нужно быть осторжно < и > , так как панель начинает думать что это элемент и: <хрень> не отобразится и ещё хуже будет если вы не закроете эту бяку через </хрень> < / > - заменить на &# 60/62 ; из первой строки

BaDoS: DmitriiP можете перезалить ваш модуль CP1251, а то ссылка уже не рабочая?

DmitriiP: BaDoS пишет: DmitriiP можете перезалить ваш модуль CP1251, а то ссылка уже не рабочая? в Л.С.



полная версия страницы