LINUX.ORG.RU

История изменений

Исправление fsb4000, (текущая версия) :

Что ж там раньше было-то?

Смотря для чего.

Для вывода текста различных стран был UTF-16, начиная с Windows NT 4.0(или даже более ранних версий Windows NT), когда Linux или FreeBSD о UTF даже не мечтал.

Если касается локалей, то были однобайтовые кодировки. Вид их был такой:

setlocale(LC_ALL, "ru-RU"); // ANSI codepage, 1251
setlocale(LC_ALL, "ru-RU.ACP"); // тоже самое, явно пишем что хотим ANSI 
setlocale(LC_ALL, "ru-RU.OCP"); // OEM codepage, 866
setlocale(LC_ALL, ".866"); //  ещё можно просто указывать .номер_локали
setlocale(LC_ALL, ".1251");
setlocale(LC_ALL, "С"); // ну и классические С и
setlocale(LC_ALL, ""); // и "" тоже поддерживались и поддерживаются

Как можно видеть, раньше было тире, а не подчеркивание.

В Windows 10 появились UTF-8 локали. Но это только в Windows 10 и я не помню с какой именно Windows 10. Даже в Windows Server 2016 нет UTF-8 локалей.

https://github.com/microsoft/STL/pull/1240

Исходная версия fsb4000, :

Что ж там раньше было-то?

Смотря для чего.

Для вывода текста различных стран был UTF-16, начиная с Windows NT 4.0(или даже более ранних версий Windows NT), когда Linux или FreeBSD о UTF даже не мечтал.

Если касается локалей, то были однобайтовые кодировки. Вид их был такой:

setlocale(LC_ALL, "ru-RU"); // ANSI codepage, 1251
setlocale(LC_ALL, "ru-RU.ACP"); // тоже самое, явно пишем что хотим ANSI 
setlocale(LC_ALL, "ru-RU.OCP"); // OEM codepage, 866
setlocale(LC_ALL, ".866"); //  ещё можно просто указывать .номер_локали
setlocale(LC_ALL, ".1251");
setlocale(LC_ALL, "С"); // ну и классические С и
setlocale(LC_ALL, ""); // и "" тоже поддерживались и поддерживаются

Как можно видеть, раньше было тире, а не подчеркивание.