Size: a a a

2021 February 19

MK

Mikhail Kalugin in pro.cxx
Respirant
Я читал, что многие разработчики предпочитают для кроссплатформенности использовать wchar_t на Windows, а char на Unix/Mac. Может действительно в этом дело
Это потому что unicode в windows api UCS2 а в UNIX это может оказаться UCS4, UTF-8, UTF-16, плюс легко может оказаться и простая однобайтная кодировка а не unicode. Но, чаще всего или utf-8 или однобайтная, по этому в windows для api wchar_t, а в *nix - char (для utf-8 тоже используется)
источник

R

Respirant in pro.cxx
Mikhail Kalugin
Это потому что unicode в windows api UCS2 а в UNIX это может оказаться UCS4, UTF-8, UTF-16, плюс легко может оказаться и простая однобайтная кодировка а не unicode. Но, чаще всего или utf-8 или однобайтная, по этому в windows для api wchar_t, а в *nix - char (для utf-8 тоже используется)
Как это все предусмотреть интересно?
источник

SH

Serhii Herashchenko in pro.cxx
Respirant
Я читал, что многие разработчики предпочитают для кроссплатформенности использовать wchar_t на Windows, а char на Unix/Mac. Может действительно в этом дело
источник

АР

Андрей Руссков... in pro.cxx
Respirant
Как это все предусмотреть интересно?
просто исходи из того что в линуксах по-человечески сделано, а в винде по-другому )
источник

R

Respirant in pro.cxx
Андрей Руссков
просто исходи из того что в линуксах по-человечески сделано, а в винде по-другому )
Да, действительно заработало.

Согласен, но что поделать)
источник

ЮП

Юрий Першин... in pro.cxx
А вот в QT остановились на 2-байтном юникоде - с поддержкой разнообразных конверсий из и в куда угодно. И под линуксом памяти не в 4 раза больше жрёт, и под виндой быстро работает. Компромисс, короче )
источник

MK

Mikhail Kalugin in pro.cxx
Юрий Першин
А вот в QT остановились на 2-байтном юникоде - с поддержкой разнообразных конверсий из и в куда угодно. И под линуксом памяти не в 4 раза больше жрёт, и под виндой быстро работает. Компромисс, короче )
UTF-8 же вроде, плавающая ширина символа от одного байта.
источник

ЮП

Юрий Першин... in pro.cxx
Mikhail Kalugin
UTF-8 же вроде, плавающая ширина символа от одного байта.
Нет, внутри QString не utf-8
источник

IG

Ilya Golovenko in pro.cxx
источник

MK

Mikhail Kalugin in pro.cxx
Юрий Першин
Нет, внутри QString не utf-8
Да, вижу. UTF-16
источник

ЮП

Юрий Першин... in pro.cxx
Я бы больше обрадовался u8 в QString, но увы )
источник

AS

Anatoly Shirokov in pro.cxx
Mikhail Kalugin
Это потому что unicode в windows api UCS2 а в UNIX это может оказаться UCS4, UTF-8, UTF-16, плюс легко может оказаться и простая однобайтная кодировка а не unicode. Но, чаще всего или utf-8 или однобайтная, по этому в windows для api wchar_t, а в *nix - char (для utf-8 тоже используется)
UCS2 уже давно нигде нет :)
источник

MK

Mikhail Kalugin in pro.cxx
Anatoly Shirokov
UCS2 уже давно нигде нет :)
А что там? UTF-16?
источник

AS

Anatoly Shirokov in pro.cxx
Mikhail Kalugin
А что там? UTF-16?
в Windows UTF-16, и даже для ANSI версий WINAPI можно включить UTF-8
источник

DP

Denis Paukaev in pro.cxx
ucs2 было до NT вроде
источник

DP

Denis Paukaev in pro.cxx
или что-то в те времена)
источник

MK

Mikhail Kalugin in pro.cxx
Denis Paukaev
ucs2 было до NT вроде
Да, один из первых unicod-ов, совсем древний...
источник

MK

Mikhail Kalugin in pro.cxx
Anatoly Shirokov
в Windows UTF-16, и даже для ANSI версий WINAPI можно включить UTF-8
Вообще, да, UTF-8 оно знает, можно сделать например вот так: setlocale(LC_ALL, “ru_RU.utf8”); SetConsoleCP(CP_UTF8); SetConsoleOutputCP(CP_UTF8); (но при этом нужно позаботиться о восстановление кодовой страницы консоли при выходе. С cmd.exe десятки точно работает, с Windows Terminal не пробовал.
источник

D

Danya in pro.cxx
Mikhail Kalugin
Вообще, да, UTF-8 оно знает, можно сделать например вот так: setlocale(LC_ALL, “ru_RU.utf8”); SetConsoleCP(CP_UTF8); SetConsoleOutputCP(CP_UTF8); (но при этом нужно позаботиться о восстановление кодовой страницы консоли при выходе. С cmd.exe десятки точно работает, с Windows Terminal не пробовал.
Кто-то здесь или в @supapro говорил, что UTF-8 на винде поддерживается только относительно недавно и на XP не будет работать, например
источник

D

Danya in pro.cxx
Mikhail Kalugin
Вообще, да, UTF-8 оно знает, можно сделать например вот так: setlocale(LC_ALL, “ru_RU.utf8”); SetConsoleCP(CP_UTF8); SetConsoleOutputCP(CP_UTF8); (но при этом нужно позаботиться о восстановление кодовой страницы консоли при выходе. С cmd.exe десятки точно работает, с Windows Terminal не пробовал.
Terminal — это просто обёртка же над консолями разными. Если работает в командной строке, то и там должно тоже.
источник