| Предыдущий | Следующий |
| ERROR_DOMAIN_CTRLR_CONFIG_ERROR | ERROR_UNDEFINED_CHARACTER |
ERROR_ILLEGAL_CHARACTER
description[входные данные содержат последовательность символов, которую Windows считает недопустимой.]Обнаружена недопустимая последовательность символов
ERROR_ILLEGAL_CHARACTER означает, что Windows обнаружила символ или последовательность байтов, недопустимую для активной кодировки. В многобайтовых кодировках это может быть незавершённый начальный байт; в Unicode — зарезервированные несимволы или некорректные суррогатные пары.
Типичные причины
- Декодирование байтов с использованием неправильной кодовой страницы.
- Обрезка многобайтовой последовательности или UTF-последовательности посередине символа.
- Передача непроверенного внешнего текста строгому API преобразования.
- Смешивание ANSI- и Unicode-интерфейсов либо неправильные длины строк.
Диагностика
Сохраните имя кодировки, длину в байтах, смещение ошибки и безопасный шестнадцатеричный фрагмент около неё. Не записывайте конфиденциальный текст целиком. Проверьте, выражаются ли длины в байтах или символах и включают ли завершающий ноль.
Обработка
Отклоняйте повреждённый ввод или применяйте явно документированную политику замены. Не переключайте кодовые страницы молча, поскольку одни и те же байты могут преобразоваться в разный текст. Сохраняйте исходные байты, если данные потребуется исправлять позднее.
Рекомендации разработчику
Предпочитайте UTF-8 или UTF-16 на всём тракте, проверяйте данные на границах системы и тестируйте разделённые буферы, дополнительные символы и недопустимые последовательности.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.