Кодовая страница Windows 1252 способна обрабатывать не английские символы - PullRequest
0 голосов
/ 12 сентября 2018

Мы находимся в ситуации, когда наша программа работает на одном компьютере, а не на другом.Мы определили проблему как проблему использования нами версий GetTempPath по ANSI;которые терпят неудачу в неанглийских ОС.Все идет нормально.Однако наш код работает на «некоторых» компьютерах, и результаты тестового приложения противоречивы.Кажется, если путь TEMP содержит не английские символы, скажем, TEMP = E: / टेम्प, то на некоторых компьютерах GetTempPath возвращает E: / ???и позже попытка открыть файл в этой папке не удалась.Справедливо.Легко исправить - используйте Unicode-версии API.

Но на некоторых других компьютерах он возвращает правильную кодировку, так что в конечном итоге открытие файла завершается успешно.

Я проверяю ACP на этом компьютере - это 1252. КАК 1252 способен кодировать не английские символы?

Это стало темой обсуждения - как наша программа работала все время?О такой ошибке нужно было сообщить давно и т. Д.

1 Ответ

0 голосов
/ 14 сентября 2018

КАК 1252 способен кодировать не английские символы? "

Поскольку кодовая страница 1252 содержит различные неанглийские символы. См. Полную таблицу символов вВикипедия. Обратите внимание, что टे, म् и НЕ присутствуют в 1252, поэтому они рассматриваются как ? при обработке как ANSI.

Кроме того, вы должны использовать Unicode версия функций API вместо версий ANSI, тогда у вас больше не будет этой проблемы.

...