Нужно ли использовать
Широкие функции Windows, или я могу сделать
теперь все с Unicode и UTF-8?
Да. К сожалению, в Windows нет встроенной поддержки UTF-8. Если вам нужна надлежащая поддержка Unicode, вам нужно использовать wchar_t
версию функций Windows API, а не char
версию.
я должен исключить TCHAR из кода Windows?
Да, вы должны. Причина, по которой существует TCHAR
, заключается в поддержке как версий Unicode, так и не-Unicode для Windows. Поддержка не Unicode, возможно, была серьезной проблемой еще в 2001 году, когда Windows 98 все еще была популярна, но не сегодня.
И очень маловероятно, что любая библиотека, отличная от Windows, будет иметь такую же перегрузку char
/ wchar_t
, что делает TCHAR
пригодной для использования.
Итак, замените все ваши TCHAR
s на wchar_t
s.
Код компилируется на Unix / Mac с GCC и кросс-компилируется для Windows с MinGW.
Раньше мне приходилось писать кроссплатформенный код C ++. (Сейчас моя работа - написание кроссплатформенного кода на C #.) Кодировка символов довольно болезненна, когда Windows не поддерживает UTF-8, а Un * x не поддерживает UTF-16. В итоге я использовал UTF-8 в качестве основной кодировки и преобразовал по мере необходимости в Windows.