В этой инструкции — несколько простых способов посмотреть дату и время установки Windows 10, 8 или Windows 7 на компьютере как без использования сторонних программ, а только средствами операционной системы, так и посредством сторонних утилит.
Не знаю, для чего именно может потребоваться информация о дате и времени установки Windows (кроме любопытства), однако вопрос достаточно актуален у пользователей, а потому имеет смысл рассмотреть ответы на него.
Узнаем дату установки с помощью команды SystemInfo в командной строке
Первый из способов, вероятно, один из самых простых. Просто запустите командную строку (в Windows 10 это можно сделать через меню правого клика по кнопке «Пуск», а во всех версиях Windows — нажав клавиши Win+R и введя cmd) и введите команду systeminfo после чего нажмите Enter.
После короткого промежутка времени в командной строке будет отображена вся основная информация о вашей системе, включая дату и время установки Windows на данный компьютер.
Примечание: команда systeminfo показывает и много лишней информации, если вы хотите, чтобы она отобразила только информацию о дате установки, то в русской версии Windows вы можете использовать следующий вид этой команды:
systeminfo | find "Дата установки"
Wmic.exe
Команда WMIC позволяет получить очень самую различную информацию о Windows, в том числе и дату ее установки. Просто введите в командной строке wmic os get installdate и нажмите Enter.
В результате вы увидите длинное число, в котором первые четыре цифры — год, следующие две — месяц, еще две — день, а оставшиеся шесть цифр соответствуют часам, минутам и секундам, когда была установлена система.
С помощью проводника Windows
Способ не самый точный и не всегда применим, но: если вы не меняли и не удаляли пользователя, которого создавали при первоначальной установке Windows на компьютер или ноутбук, то дата создания папки пользователя C:\Users\Имя_Пользователя точно совпадает с датой установки системы, а время отличается всего на несколько минут.
То есть вы можете: в проводнике зайти в папку C:\Пользователи (Users), кликнуть правой кнопкой мыши по папки с именем пользователя, и выбрать пункт «Свойства». В сведениях о папке дата её создания (поле «Создан») и будет являться нужной вам датой установки системы (за редкими исключениями).
Дата и время установки системы в редакторе реестра
Не знаю, пригодится ли этот способ посмотреть дату и время установки Windows кому-то, кроме программиста (он не совсем удобен), но приведу и его.
Если запустить редактор реестра (Win+R, ввести regedit) и перейти к разделу HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows NT\ CurrentVersion то в нем вы найдете параметр InstallDate, значение которого равно секундам, прошедшим с 1 января 1970 года до даты и времени установки текущей операционной системы.
Дополнительная информация
Многие программы, предназначенные для просмотра информации о системе и характеристиках компьютера, отображают в том числе и дату установки Windows.
Одна из самых простых таких программ, на русском языке — Speccy, скриншот которой вы можете видеть ниже, но хватает и других. Вполне возможно, что одна из них уже и без того установлена на вашем компьютере.
На этом всё. Кстати, будет интересно, если вы поделитесь в комментариях, для чего вам потребовалось получить информацию о времени установки системы на компьютер.
Вы тут: Главная → Windows → Как посмотреть дату установки Windows и историю ее обновлений до новой версии
Начиная с осени 2019 года у ответов на эти вопросы появились новые нюансы, которые в письме попросил разъяснить читатель блога Евгений. Сегодня я покажу, как узнать дату первоначальной установки Windows и распутать клубок истории обновлений ОС в новых реалиях.
[+] Сегодня в программе
Дата установки последнего обновления компонентов
Казалось бы, в PowerShell можно легко посмотреть дату установки Windows и даже вывести ее в удобном формате.
(Get-CimInstance Win32_OperatingSystem).InstallDate
Именно эту команду я использовал для сбора сведений в утилите CheckBootSpeed. В современных Windows вас здесь ждет первый нюанс.
Переустановка поверх
Команда выше покажет дату первоначальной установки Windows лишь в том случае, если после чистой установки не было ни одной переустановки поверх. Напомню, что поверх текущей версии можно поставить такую же, либо более новую, что официально называется обновление компонентов.
Если обновления компонентов были, команда показывает дату установки последнего из них, причем только если обновление выполнялось путем переустановки поверх любым способом, включая Windows Update (WU – способ доставки новой версии, нежели ее установки). Я не случайно подчеркиваю этот момент, потому что здесь скрыт следующий нюанс.
Тумблер (enablement package)
Начиная с 2019 года осенние выпуски являются стабилизирующими, при этом у них общая кодовая база с весенними. Поэтому весенние версии получают небольшой набор новых фич постепенно в рамках накопительных исправлений. Обновление до осенней версии включается отдельным исправлением.
Я неоднократно разбирал этот момент под разными углами в канале Telegram, ищите в нем тумблер. Например, если вы обновили 20H1 до 20H2 посредством:
- установки с флэшки или MCT, команда покажет дату установки 20H2
- Windows Update или вручную отдельным исправлением, команда покажет дату установки 20H1
Чтобы посмотреть дату включения тумблером, надо знать номер статьи базы знаний, который находится поиском по enablement package. Например:
- 1909 — KB4517245
- 20H2 — KB4562830
Недавняя история обновлений компонентов
Теперь можно посмотреть историю в пределах последнего года. На моей 20H2:
(Get-CimInstance Win32_OperatingSystem).InstallDate 25 апреля 2020 г. 14:58:09 Get-Hotfix -id KB4562830, KB4517245 | ft HotFixID, Description, InstalledOn HotFixID Description InstalledOn -------- ----------- ----------- KB4562830 Update 11.10.2020 0:00:00
В списке нет тумблера, включавшего 1909, потому что впоследствии была установлена весенняя версия 20H1. Другими словами, увидеть его можно только на осенних выпусках. В принципе, то же самое у меня отображает история обновлений в параметрах. Однако у других я там видел странности, поэтому лучше полагаться на команды.
Теперь давайте копнем историю поглубже.
История обновлений до новой версии
Windows хранит историю обновлений до новой версии путем переустановки поверх в разделе реестра HKLM\SYSTEM\Setup
.
Команда PowerShell
С помощью PowerShell несложно вытащить удобный список, приводя дату и время установки к читаемому виду. Эту команду вы легко можете найти в первых строчках Google.
Get-ChildItem -Path HKLM:\System\Setup\Source* | ForEach-Object {Get-ItemProperty -Path Registry::$_} | Select-Object ProductName, ReleaseID, CurrentBuild, @{n="Install Date"; e={([DateTime]'1/1/1970').AddSeconds($_.InstallDate)}} | Sort-Object {[int]($_.CurrentBuild)}
На моем основном ноутбуке история такая:
ProductName ReleaseId CurrentBuild Install Date ----------- --------- ------------ ------------ Windows 10 Pro 1607 14393 02.10.2016 20:37:18 Windows 10 Pro Insider Preview 1607 15014 24.01.2017 0:32:07 Windows 10 Pro Insider Preview 1607 15025 07.02.2017 9:59:44 Windows 10 Pro Insider Preview 1607 15031 09.02.2017 11:27:58 Windows 10 Pro Insider Preview 1607 15042 26.02.2017 17:32:43 Windows 10 Pro Insider Preview 1607 15046 02.03.2017 20:26:16 Windows 10 Pro Insider Preview 1607 15048 04.03.2017 6:35:25 Windows 10 Pro 1703 15055 12.03.2017 1:28:42 Windows 10 Pro 1703 15058 16.03.2017 1:22:48 Windows 10 Pro 1703 15061 19.03.2017 14:26:20 Windows 10 Pro 1703 15063 21.03.2017 19:25:38 Windows 10 Pro Insider Preview 1703 16193 22.05.2017 21:15:24 Windows 10 Pro Insider Preview 1703 16199 26.05.2017 11:38:19 Windows 10 Pro Insider Preview 1703 16215 09.06.2017 8:45:22 Windows 10 Pro Insider Preview 1703 16226 23.06.2017 0:16:18 Windows 10 Pro Insider Preview 1703 16232 29.06.2017 0:40:38 Windows 10 Pro Insider Preview 1703 16237 07.07.2017 22:52:02 Windows 10 Pro Insider Preview 1703 16241 14.07.2017 22:37:27 Windows 10 Pro Insider Preview 1703 16251 28.07.2017 0:42:13 Windows 10 Pro Insider Preview 1703 16257 15.08.2017 1:19:14 Windows 10 Pro Insider Preview 1703 16273 27.08.2017 4:40:56 Windows 10 Pro Insider Preview 1703 16275 29.08.2017 1:17:52 Windows 10 Pro Insider Preview 1703 16278 30.08.2017 22:52:21 Windows 10 Pro Insider Preview 1703 16281 03.09.2017 1:29:49 Windows 10 Pro 1709 16296 25.09.2017 1:00:10 Windows 10 Pro 1709 16299 28.09.2017 1:32:30 Windows 10 Pro 1709 16299 19.10.2017 7:53:46 Windows 10 Pro 1709 16299 03.10.2017 11:30:40 Windows 10 Pro 1803 17133 06.04.2018 8:45:36 Windows 10 Pro 1803 17134 21.04.2018 19:54:34 Windows 10 Pro 1809 17763 03.10.2018 6:56:04 Windows 10 Pro 1909 18363 13.04.2019 20:46:32
Сопоставляя ее со списком версий в Flight Hub, можно четко восстановить хронологический ход событий:
- октябрь 2016: чистая установка стабильной версии 1607, когда ноутбук появился у меня
- февраль 2017: я перешел на инсайдерские сборки в быстром кольце
- сентябрь 2017: я поймал момент, когда быстрое кольцо уравнялось со стабильной версией, и перешел в Release Preview
Вроде все понятно, но читатель блога заметил у себя пару нестыковок, которые и попросил объяснить в письме.
Нестыковки списка
Заметьте, что моя история заканчивается на 1909, хотя я обновился с нее до 20H1 → 20H2. Это происходит потому, что запись текущей версии в реестр осуществляется во время ее обновления до следующей путем переустановки поверх. Другими словами, в списке не будет последней установленной поверх версии. Но я уже объяснил выше, как посмотреть дату ее установки, равно как и дату включения осеннего выпуска.
В списке также отсутствует версия 1903, однако обратите внимание, что 1909 якобы была установлена 13.04.2019. На самом деле – это дата установки 1903, с которой 1909 имеет общую кодовую базу. Последовательность была такой:
- В апреле 2019 года установлена 1903.
- Осенью 2019 года пришло исправление-тумблер, включившее версию 1909.
- В апреле 2020 года поверх 1909 установилась 20H1, после чего в реестре появилась запись об установке 1909, но с датой установки 1903
Да, могло быть и попроще. С другой стороны, эти записи в реестре и не рассчитаны на широкие массы.
Дискуссия
В комментариях покажите результат трех команд из статьи на основном домашнем ПК. Посмотрим, как давно вы не делали чистую установку
(Get-CimInstance Win32_OperatingSystem).InstallDate Get-Hotfix -id KB4562830, KB4517245 | ft HotFixID, Description, InstalledOn Get-ChildItem -Path HKLM:\System\Setup\Source* | ForEach-Object {Get-ItemProperty -Path Registry::$_} | Select-Object ProductName, ReleaseID, CurrentBuild, @{n="Install Date"; e={([DateTime]'1/1/1970').AddSeconds($_.InstallDate)}} | Sort-Object {[int]($_.CurrentBuild)}
Для публикации текстовых отчетов используйте pastebin, а картинки заливайте на сторонние хостинги. Затем просто вставляйте ссылку в комментарии.
Если в последние два-три года вы делали чистую установку не по причине покупки нового диска или компьютера, расскажите, что вас к этому побудило.
Возможно, когда-нибудь по тем или иным причинам вам понадобится информация о дате установки Windows на вашем компьютере. Какими бы не были у вас причины узнать это, в этой статье вы можете найти все способы узнать дату установки Windows самых разных версий — XP, Vista, 7, 8 и 10.
Этот метод, вероятно, самый простой. Он позволяет узнать дату и время установки с точностью до нескольких часов, при этом работает в Windows XP и выше.
- Откройте Проводник.
- Зайдите на системный диск (чаще всего — диск С).
- Откройте папку Пользователи (Users).
- Кликните правой клавишей мыши по директории основного пользователя и выберите пункт Свойства.
- В графе Создан будет указана дата создания каталога, которая по совместительству является датой установки Windows.
Обратите внимание, что в некоторых случаях дата создания папок Windows или Program Files также является правильной, но из-за некоторых особенностей установки Windows она может оказаться и некорректной. Именно поэтому лучше использовать папку пользователя.
Как узнать дату установки Windows с помощью SystemInfo
Данный способ также работает во всех версиях системы, начиная с Windows XP. Он позволяет узнать дату установки Windows в командной строке (cmd) с точностью до секунды.
- Откройте командную строку. Нажмите Win + R. Введите команду cmd и нажмите Enter.
- В командной строке введите запрос systeminfo и нажмите Enter.
- Необходимая дата будет указана в строке Дата установки (Original Install Date в английской локализации).
Чтобы не искать нужную строку среди многих других, можно ввести следующую команду:
- Русская локализация: systeminfo | find «Дата установки»
- Английская локализация: systeminfo | find «Original Install Date»
В таком случае инструмент выдаст информацию только о дате установки, без дополнительных данных о системе.
Как узнать дату установки Windows с помощью WMIC
Утилита командной строки Windows Management Instrumentation Command также способна отобразить информацию о дате и времени установки системы с точностью до секунды. Отметим, что она недоступна в домашних редакциях Windows XP.
- Запустите командую строку. Нажмите Win + R. Введите команду cmd и нажмите Enter.
- Наберите команду wmic os get installdate и нажмите Enter.
- Вы получите строку в виде AAAABBCCXXYYZZ. Здесь AAAA — год, BB — месяц, CC — день, XX — час, YY — минута, ZZ — секунда установки Windows.
Дата и время, конечно, будут совпадать с информацией от SystemInfo.
Как проверить дату установки Windows в реестре
Самый сложный способ проверить дату установки системы — обратиться к реестру. Он, скорее всего, будет полезен лишь IT-специалистам, но мы всё-таки приведём информацию по нему.
- Нажмите Win + R. Введите команду regedit и нажмите Enter.
- Пройдите в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
- Найдите справа параметр InstallDate.
- Кликните по нему два раза и переключитесь на десятичную систему исчисления. Полученное значение — дата в UNIX-формате, то есть число секунд, прошедших с 1 января 1970 года.
- Конвертировать полученную информацию в обычный вид можнос помощью сайта-конвертера. Отметим, что эти данные не меняются в зависимости от часового пояса компьютера, по умолчанию используется время по Гринвичу (UTC). Чтобы узнать время в вашем часовом поясе, достаточно прибавить или отнять несколько часов. Например, в нашем случае (UTC+3) нужно добавить к полученной дате 3 часа.
Скорее всего, механизмы WMIC и SystemInfo просто считывают значение данного ключа в реестре и отображают его в конвертированном варианте.
Как узнать дату установки Windows с помощью сторонних программ
Большинство утилит для диагностики Windows и компонентов компьютера могут отобразить дату установки системы. Например, одна из самых популярных программ, AIDA64, выводит дату в категории Операционная система:
Теперь вы точно знаете, когда была установлена Windows на вашем компьютере.
Прежде чем рассказать о том, как узнать дату установки Windows (будь то Windows 7 или Windows XP), предлагаю порассуждать о том, зачем в принципе может понадобиться информация о дате установке Windows. Я навскидку придумал несколько таких причин:
- Если вы покупаете б/у компьютер и продавец говорит о том, что он не разу не переустанавливал систему, то приблизительный возраст компьютера можно получить, узнав дату установки ОС.
- Многие пользователи Windows предпочитают в профилактических целях осуществлять переустановку системы один раз в год или же в два года, тем самым можно радикально избавляться от системного мусора и ненужных программ. Узнав дату последней установки Windows, вы можете прикинуть, когда примерно нужно ее переустановить в следующий раз.
- Можно вывести на чистую воду нечистоплотного продавца, который пытается под видом нового компьютера продать старый (и у которого не хватило ума почистить систему)
- Обыкновенное любопытство
Узнать дату установки Windows можно с помощью различных встроенных средств системы, я постарался подобрать универсальные, которые будут работать и в Windows XP и Windows 7.
1) Команда systeminfo
Команда systeminfo.exe содержит ряд полезной информации о системе, в том числе и дату установки Windows. Откройте командную строку (cmd.exe) , наберите в ней systeminfo.
Как вы видите узнать дату установки Windows, можно, ознакомившись со значением в строке Original Install Date, в моем случае системы была установлена 28.01.2011, 14:04:14
Чтобы не выводить лишнюю команду, можно воспользоваться командой find для отображения только информации о дате установки системы:
systeminfo | find /i "install date"
С помощью команды systeminfo можно дату установки и Windows 7 и Windows XP, во всех ОС она отрабатывает корректно.
2) Второй вариант определения того, когда установлена ваша ОС Windows –воспользоваться WMI командой wmic , для этого в командной строке наберите:
wmic os get installdate
После выполнения запроса отобразится дата установки Windows. Преобразовать дату в более удобочитаемый вид можно с помощью команды PowerShell
PS C:\> ([WMI]'').ConvertToDateTime((Get-WmiObject Win32_OperatingSystem).InstallDate)
Кстати, мы уже пользовались командами syteminfo и wmic для просмотра всех установленных обновлений Windows.
3) Информацию о дате установки Windows можно получить и из системного реестра. Для чего в редакторе реестра откройте ветку: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion и найдите параметр типа REG_DWORD с именем InstallDate, в моем случае это 1296201854.
Как вы видите, это значение совсем не похоже на дату, причина в том, что дата установки системы в реестре хранится в формате времени Unix (32битном значение, означающее количество секунд, прошедших с 1970-01-01 00:00:00 UTC). Чтобы преобразовать формат времени Unix в более удобный формат, наберите следующую команду PowerShell:
PS C:\> [timezone]::CurrentTimeZone.ToLocalTime(([datetime]'1/1/1970').AddSeconds($(get-itemproperty 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion').InstallDate))
На этом известные мне методы, помогающие ответить на вопрос «Как узнать дату установки Windows», окончились, если вам известны альтернативы этим методом, поделитесь ими в комментариях, я с удовольствием дополню этот список.
From Wikipedia, the free encyclopedia
Microsoft was one of the first companies to implement Unicode in their products. Windows NT was the first operating system that used «wide characters» in system calls. Using the (now obsolete) UCS-2 encoding scheme at first, it was upgraded to the variable-width encoding UTF-16 starting with Windows 2000, allowing a representation of additional planes with surrogate pairs. However Microsoft did not support UTF-8 in its API until May 2019.
Before 2019, Microsoft emphasized UTF-16 (i.e. -W API), but has since recommended to use UTF-8 (at least in some cases),[1] on Windows and Xbox (and in other of its products), even states «UTF-8 is the universal code page for internationalization [and] UTF-16 [… is] a unique burden that Windows places on code that targets multiple platforms. [..] Windows [is] moving forward to support UTF-8 to remove this unique burden [resulting] in fewer internationalization issues in apps and games».[2]
A large amount of Microsoft documentation uses the word «Unicode» to refer explicitly to the UTF-16 encoding. Anything else, including UTF-8, is not «Unicode» in Microsoft’s outdated language (while UTF-8 and UTF-16 are both Unicode according to the Unicode Standard, or encodings/»transformation formats» thereof).
In various Windows families
[edit]
Windows NT based systems
[edit]
Current Windows versions and all back to Windows XP and prior Windows NT (3.x, 4.0) are shipped with system libraries that support string encoding of two types: 16-bit «Unicode» (UTF-16 since Windows 2000) and a (sometimes multibyte) encoding called the «code page» (or incorrectly referred to as ANSI code page). 16-bit functions have names suffixed with ‘W’ (from «wide») such as SetWindowTextW
. Code page oriented functions use the suffix ‘A’ for «ANSI» such as SetWindowTextA
(some other conventions were used for APIs that were copied from other systems, such as _wfopen/fopen
or wcslen/strlen
). This split was necessary because many languages, including C, did not provide a clean way to pass both 8-bit and 16-bit strings to the same function.
Microsoft attempted to support Unicode «portably» by providing a «UNICODE» switch to the compiler, that switches unsuffixed «generic» calls from the ‘A’ to the ‘W’ interface and converts all string constants to «wide» UTF-16 versions.[3][4] This does not actually work because it does not translate UTF-8 outside of string constants, resulting in code that attempts to open files just not compiling.[citation needed]
Earlier, and independent of the «UNICODE» switch, Windows also provided the Multibyte Character Sets (MBCS) API switch.[5] This changes some functions that don’t work in MBCS such as strrev
to an MBCS-aware one such as _mbsrev
.[6][7]
In (the now discontinued) Windows CE, UTF-16 was used almost exclusively, with the ‘A’ API mostly missing.[8] A limited set of ANSI API is available in Windows CE 5.0, for use on a reduced set of locales that may be selectively built onto the runtime image.[9]
In 2001, Microsoft released a special supplement to Microsoft’s old Windows 9x systems. It includes a dynamic link library, ‘unicows.dll’, (only 240 KB) containing the 16-bit flavor (the ones with the letter W on the end) of all the basic functions of Windows API. It is merely a translation layer: SetWindowTextW
will simply convert its input using the current codepage and call SetWindowTextA
.
Microsoft Windows (Windows XP and later) has a code page designated for UTF-8, code page 65001[10] or CP_UTF8
. For a long time, it was impossible to set the locale code page to 65001, leaving this code page only available for a) explicit conversion functions such as MultiByteToWideChar and/or b) the Win32 console command chcp 65001
to translate stdin/out between UTF-8 and UTF-16. This meant that «narrow» functions, in particular fopen
(which opens files), couldn’t be called with UTF-8 strings, and in fact there was no way to open all possible files using fopen
no matter what the locale was set to and/or what bytes were put in the string, as none of the available locales could produce all possible UTF-16 characters. This problem also applied to all other APIs that take or return 8-bit strings, including Windows ones such as SetWindowText
.
Programs that wanted to use UTF-8, in particular code intended to be portable to other operating systems, needed a workaround for this deficiency. The usual work-around was to add new functions to open files that convert UTF-8 to UTF-16 using MultiByteToWideChar and call the «wide» function instead of fopen
.[11] Dozens of multi-platform libraries added wrapper functions to do this conversion on Windows (and pass UTF-8 through unchanged on others), an example is a proposed addition to Boost, Boost.Nowide.[12] Another popular work-around was to convert the name to the 8.3 filename equivalent, this is necessary if the fopen
is inside a library. None of these workarounds are considered good, as they require changes to the code that works on non-Windows.
In April 2018 (or possibly November 2017[13]), with insider build 17035 (nominal build 17134) for Windows 10, a «Beta: Use Unicode UTF-8 for worldwide language support» checkbox appeared for setting the locale code page to UTF-8.[a] This allows for calling «narrow» functions, including fopen
and SetWindowTextA
, with UTF-8 strings. However this is a system-wide setting and a program cannot assume it is set.
In May 2019, Microsoft added the ability for a program to set the code page to UTF-8 itself,[1][14] allowing programs written to use UTF-8 to be run by non-expert users.
As of 2019, Microsoft recommends programmers use UTF-8 (e.g. instead of any other 8-bit encoding),[1] on Windows and Xbox, and may be recommending its use instead of UTF-16, even stating «UTF-8 is the universal code page for internationalization [and] UTF-16 [..] is a unique burden that Windows places on code that targets multiple platforms.»[2] Microsoft does appear to be transitioning to UTF-8, stating it previously emphasized its alternative, and in Windows 11 some system files are required to use UTF-8 and do not require a Byte Order Mark.[15] Notepad can now recognize UTF-8 without the Byte Order Mark, and can be told to write UTF-8 without a Byte Order Mark.[citation needed] Some other Microsoft products are using UTF-8 internally, including Visual Studio[16][17] and their SQL Server 2019, with Microsoft claiming 35% speed increase from use of UTF-8, and «nearly 50% reduction in storage requirements.»[18]
String constants in Visual Studio
[edit]
Before 2019 Microsoft’s compilers could not produce UTF-8 string constants from UTF-8 source files. This is due to them converting all strings to the locale code page (which could not be UTF-8). At one time the only method to work around this was to turn off UNICODE, and not mark the input file as being UTF-8 (i.e. do not use a BOM).[19] This would make the compiler think both the input and outputs were in the same single-byte locale, and leave strings unmolested.
- Bush hid the facts, a text encoding mojibake
- ^ Found under control panel, «Region» entry, «Administrative» tab, «Change system locale» button.
- ^ a b c «Use UTF-8 code pages in Windows apps». learn.microsoft.com. Retrieved 2020-06-06.
As of Windows version 1903 (May 2019 update), you can use the ActiveCodePage property in the appxmanifest for packaged apps, or the fusion manifest for unpackaged apps, to force a process to use UTF-8 as the process code page. […]
CP_ACP
equates toCP_UTF8
only if running on Windows version 1903 (May 2019 update) or above and the ActiveCodePage property described above is set to UTF-8. Otherwise, it honors the legacy system code page. We recommend usingCP_UTF8
explicitly. - ^ a b «UTF-8 support in the Microsoft Game Development Kit (GDK) — Microsoft Game Development Kit». learn.microsoft.com. 19 August 2022. Retrieved 2023-03-05.
By operating in UTF-8, you can ensure maximum compatibility [..] Windows operates natively in UTF-16 (or WCHAR), which requires code page conversions by using MultiByteToWideChar and WideCharToMultiByte. This is a unique burden that Windows places on code that targets multiple platforms. [..] The Microsoft Game Development Kit (GDK) and Windows in general are moving forward to support UTF-8 to remove this unique burden of Windows on code targeting or interchanging with multiple platforms and the web. Also, this results in fewer internationalization issues in apps and games and reduces the test matrix that’s required to get it right.
- ^ «Unicode in the Windows API». Retrieved 7 May 2018.
- ^ «Conventions for Function Prototypes (Windows)». MSDN. Retrieved 7 May 2018.
- ^ «Support for Multibyte Character Sets (MBCSs)». Retrieved 2020-06-15.
- ^ «Double-byte Character Sets». MSDN. 2018-05-31. Retrieved 2020-06-15.
our applications use DBCS Windows code pages with the «A» versions of Windows functions.
- ^ _strrev, _wcsrev, _mbsrev, _mbsrev_l Microsoft Docs
- ^ «Differences Between the Windows CE and Windows NT Implementations of TAPI». MSDN. 28 August 2006. Retrieved 7 May 2018.
Windows CE is Unicode-based. You might have to recompile source code that was written for a Windows NT-based application.
- ^ «Code Pages (Windows CE 5.0)». Microsoft Docs. 14 September 2012. Retrieved 7 May 2018.
- ^ «Code Page Identifiers (Windows)». msdn.microsoft.com. 7 January 2021.
- ^ «UTF-8 in Windows». Stack Overflow. Retrieved July 1, 2011.
- ^ «Boost.Nowide». GitHub.
- ^ «Windows10 Insider Preview Build 17035 Supports UTF-8 as ANSI». Hacker News. Retrieved 7 May 2018.
- ^ «Windows 10 1903 and later versions finally support UTF-8 with the A forms of the Win32 functions».
- ^ «Customize the Windows 11 Start menu». docs.microsoft.com. Retrieved 2021-06-29.
Make sure your LayoutModification.json uses UTF-8 encoding.
- ^ «New Options for Managing Character Sets in the Microsoft C/C++ Compiler». devblogs.microsoft.com. 22 February 2016.
At some point in the past, the Microsoft compiler was changed to use UTF-8 internally. So, as files are read from disk, they are converted into UTF-8 on the fly.
- ^ «validate-charset (validate for compatible characters)». docs.microsoft.com. Retrieved 2021-07-19.
Visual Studio uses UTF-8 as the internal character encoding during conversion between the source character set and the execution character set.
- ^ «Introducing UTF-8 support for SQL Server». techcommunity.microsoft.com. 2019-07-02. Retrieved 2021-08-24.
For example, changing an existing column data type from NCHAR(10) to CHAR(10) using an UTF-8 enabled collation, translates into nearly 50% reduction in storage requirements. [..] In the ASCII range, when doing intensive read/write I/O on UTF-8, we measured an average 35% performance improvement over UTF-16 using clustered tables with a non-clustered index on the string column, and an average 11% performance improvement over UTF-16 using a heap.
- ^ UTF-8 Everywhere FAQ: How do I write UTF-8 string literal in my C++ code? (note that the u8″text» proposed solution does not work, string is still mangled)
- «Unicode». MSDN. Microsoft. Retrieved November 10, 2016.