Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2023, 09:49   #11
druidvic
Пользователь
 
Регистрация: 05.06.2016
Сообщений: 45
По умолчанию

BDA, разобрался. Я качал с Sourcefourge, там оказалась "кривая". Скачал с FossHUB - все появилось. Осталось найти словари.
P.S. https://dzen.ru/a/YVKaQWxTuAXgpDSN - темная тема

Последний раз редактировалось druidvic; 11.03.2023 в 11:23.
druidvic вне форума Ответить с цитированием
Старый 16.03.2023, 02:22   #12
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
В чем странность? Сначала были анси, потом ОС развивалась и появились юникод версии + совместимость. У вас есть не странный подход?
По-моему, Microsoft поторопились вводить UTF-16 в Windows NT (и Sun поторопились вводить UTF-16 в Java), и в итоге усложнили жизнь программистам: две линейки Windows, которые работают с текстом по-разному, предлагается делать 2 build-а, а если хотите поддерживать обе линейки в рамках одного build-а, то пишите код вроде:
Код:
std::wstring title_16 = L"abc";
if (_windows_9x) { // если Windows 95/98/Me
  // переводим текст из UTF-16 в ANSI-кодировку
  std::string title_a;
  ... WideCharToMultiByte(...) ...
  SetWindowTextA(window_handle, title_a.c_str());
} else {
  SetWindowTextW(window_handle, title_16.c_str());
}
Microsoft потом для такого пути сделали MSLU (Microsoft Layer for Unicode), но он вроде не стал особо популярным.

А лучше бы подождали немного, и сделали, чтобы в обеих линейках была ровно одна функция SetWindowText (без W и A), которая принимает текст в UTF-8. Причём несколько лет назад примерно так и сделали: в последних версиях Windows в качестве ANSI-кодировки можно использовать UTF-8, то есть чтобы например функция SetWindowTextA принимала текст в UTF-8. Раньше Windows такое не поддерживала вроде из-за какого-то старого кода, который полагался на то, что в ANSI-кодировке каждый символ кодируется <= 2 байтами (в UTF-8 это не так).
Пётр Седов вне форума Ответить с цитированием
Старый 16.03.2023, 07:42   #13
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Пётр Седов Посмотреть сообщение
Microsoft поторопились вводить UTF-16 в Windows NT
Осталось изобрести машину времени, переместиться назад и сказать об этом кому следует.
Когда начиналась разработка Windows NT никто слыхить не слыхивал про UTF.
Изначально, Windows NT поддерживали не UTF16 а UCS2.

Цитата:
Сообщение от Пётр Седов Посмотреть сообщение
две линейки Windows, которые работают с текстом по-разному
Наоборот, Windows NT изначально поддерживал оба варианта. Если вам надо было писать под 9X то просто не юзали Юникод и все было чики-пуки.
Собственно, в Windows NT было много чего, чего не было в 9Х серии, соответственно это тоже нельзя было использовать.
waleri вне форума Ответить с цитированием
Старый 17.03.2023, 02:30   #14
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Осталось изобрести машину времени, переместиться назад и сказать об этом кому следует.
Когда начиналась разработка Windows NT никто слыхить не слыхивал про UTF.
В Википедии написано, что UTF-8 появилась в сентябре 1992-го, а первая версия Windows NT вышла в июле 1993-го. По-моему, Microsoft поторопились с UTF-16, и тем самым усложнили жизнь программистам. Могли бы во всех 32-битных Windows сделать UTF-8, и было бы гораздо проще. Но как говорится «хорошая мысля приходит апосля» .
Цитата:
Сообщение от waleri Посмотреть сообщение
Изначально, Windows NT поддерживали не UTF16 а UCS2.
UCS-2 -- это устаревший термин, который означает «древняя UTF-16 без суррогатных пар». Это как «C with Classes» и «C++».
Цитата:
Сообщение от waleri Посмотреть сообщение
Наоборот, Windows NT изначально поддерживал оба варианта.
Да, и я об этом уже написал:
Цитата:
Сообщение от Пётр Седов Посмотреть сообщение
осталась только линейка Windows NT/2000/XP/..., она поддерживает и A-функции тоже, они реализованы как обёртки над W-функциями.
Цитата:
Сообщение от waleri Посмотреть сообщение
Если вам надо было писать под 9X то просто не юзали Юникод и все было чики-пуки.
Да, например Delphi и C++ Builder долго так жили, на ANSI-кодировке, без Unicode-а. А если я хочу, чтобы и Unicode, и чтобы работало в Windows 9x, вот и начинается морока.
Пётр Седов вне форума Ответить с цитированием
Старый 17.03.2023, 08:35   #15
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Пётр Седов Посмотреть сообщение
По-моему, Microsoft поторопились с UTF-16, и тем самым усложнили жизнь программистам.
Вы считаете NT за пару месецев сделали? Или в ОС пихают все, что только вышло и еще не стабилизировалось?

Цитата:
Сообщение от Пётр Седов Посмотреть сообщение
Могли бы во всех 32-битных Windows сделать UTF-8, и было бы гораздо проще. Но как говорится «хорошая мысля приходит апосля»
Не могли - обратную совместимость никто не отменял. Да и с утф8 не все так гладко - для расчета размера буфера и доступа надо проводить доп расчеты.

Цитата:
Сообщение от Пётр Седов Посмотреть сообщение
А если я хочу, чтобы и Unicode, и чтобы работало в Windows 9x, вот и начинается морока.
А если захотите DirectX 10 и 9х, то ой. А если захотите.... Вам уже сказали - новые ОС принесли новое, чего не было в 9х, и если вы хотели это использовать в 9х, то начиналось веселье.
p51x вне форума Ответить с цитированием
Старый 18.03.2023, 01:55   #16
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Или в ОС пихают все, что только вышло и еще не стабилизировалось?
С UTF-16 именно так и получилось . В Википедии написано, что первая версия Unicode вышла в октябре 1991-го.
Пётр Седов вне форума Ответить с цитированием
Старый 18.03.2023, 08:23   #17
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы прикидываетесь? Вам же уже сказали изначально не было там никакого UTF.
p51x вне форума Ответить с цитированием
Старый 18.03.2023, 21:39   #18
Пётр Седов
Форумчанин
 
Регистрация: 26.10.2022
Сообщений: 119
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Вам же уже сказали изначально не было там никакого UTF.
Изначально не было термина «UTF-16», но сама 16-битная Unicode-ная кодировка уже была. И эту 16-битную Unicode-ную кодировку быстро впихнули в Windows NT и Java, но спустя несколько лет выяснилось, что это решение неудачное. Поэтому Unix-подобные операционные системы пошли по пути UTF-8, и новые языки вроде Go тоже.
Пётр Седов вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# как сделать кодировку МКТ-2 Krasi Общие вопросы .NET 1 10.11.2015 11:17
Изменить кодировку из php Gefo PHP 2 27.02.2013 17:22
ie не меняет кодировку CodeNOT PHP 3 10.02.2012 03:22
Определить кодировку Shouldercannon PHP 1 31.07.2010 18:39
Про кодировку... Lich Работа с сетью в Delphi 5 29.12.2008 10:32