Ответ 1
Я полагаю, что это не сработает, если у вас есть кодировка символов, которая не использует низкий семибитовый диапазон исключительно для ASCII. Вероятно, происходит в некоторых многобайтовых кодировках, когда данный байт является только частью символа.
Например, в Shift-JIS второй байт может начинаться с 0x40, который перекрывается с ASCII. И даже в первом байте есть некоторые небольшие изменения, такие как 0x5C (символ валюты вместо обратного слэша) или 0x7E (какая-то косая черта вместо тильды).
Я нашел эту статью где кто-то объяснил причину невключения функций POSIX в свой собственный дизайн ОС:
Эта функция довольно бессмысленна. Если мы используем кодировку символов, которая не была ascii совместим, тогда это не имеет смысла. Если мы используем здравый характер кодирования, такого как UTF-8, тогда вы можете просто проверить, не превышает ли значение 127.