Разница между функциями setlocale и wsetlocale в WinAPI заключается в типе аргумента. 1
setlocale работает с узкими строками (char*, std::string) и устанавливает локальную таблицу только для ANSI-кодировки. 1
wsetlocale — это версия setlocale для работы с широкими строками (wchar_t*, std::wstring) и кодировкой UTF-16 (стандарт Unicode). 1
В остальном поведение функций идентично. 14 Например, если проект приложения в Visual Studio настроен в режим Unicode, то будет работать только wsetlocale, так как setlocale не приспособлена к работе с этим стандартом. 1