Широкий разряд в многобайтовом формате

0

В одном из моих проектов мне нужно поддерживать UTF-8 в Windows C++.

Текущий код использует wcstombs где китайский язык не преобразуется должным образом. Я заменил wcstombs на WideCharToMultiByte. После тестирования это отлично работает в Windows 7 и Windows XP SP3, которые у меня есть.

Но в одном из старом компьютере установлена Windows XP SP3 с китайским или языковым пакетом CZech. Я понимаю, что это повлияет и на реестр. Там приложение ведет себя по-другому.

Когда я использую wcstombs при этом opertator перегружать << своего рабочего штрафа. Когда я использую WideCharToMultiByte он не работает так, как ожидалось.

Без изменения настроек реестра (установка языкового пакета) WideCharToMultiByte работает нормально.

Правильно ли я полагаю, что установка языкового пакета может повлиять на изменения реестра, которые влияют на это поведение? Пожалуйста, помогите мне понять, может ли быть что-то еще, что может повлиять на поведение.

  • 0
    Вы уверены, что WideCharToMultiByte не возвращает байтовый массив? Если это так, то, возможно, каким-то образом это смешивается с оператором двоичного сдвига (который также «<<»)
Теги:
utf-8

1 ответ

0

По умолчанию WideCharToMultiByte примет указатель на char и возвращает преобразованный многобайтовый массив.

Также он упомянул, что работает на всех ОС, кроме XP, где изменяется языковой реестр. Поэтому я не думаю, что проблема связана с бинарным оператором shif.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню