В одном из моих проектов мне нужно поддерживать UTF-8 в Windows C++.
Текущий код использует wcstombs
где китайский язык не преобразуется должным образом. Я заменил wcstombs
на WideCharToMultiByte
. После тестирования это отлично работает в Windows 7 и Windows XP SP3, которые у меня есть.
Но в одном из старом компьютере установлена Windows XP SP3 с китайским или языковым пакетом CZech. Я понимаю, что это повлияет и на реестр. Там приложение ведет себя по-другому.
Когда я использую wcstombs
при этом opertator перегружать <<
своего рабочего штрафа. Когда я использую WideCharToMultiByte
он не работает так, как ожидалось.
Без изменения настроек реестра (установка языкового пакета) WideCharToMultiByte
работает нормально.
Правильно ли я полагаю, что установка языкового пакета может повлиять на изменения реестра, которые влияют на это поведение? Пожалуйста, помогите мне понять, может ли быть что-то еще, что может повлиять на поведение.
По умолчанию WideCharToMultiByte примет указатель на char и возвращает преобразованный многобайтовый массив.
Также он упомянул, что работает на всех ОС, кроме XP, где изменяется языковой реестр. Поэтому я не думаю, что проблема связана с бинарным оператором shif.