Рекомендуется ли контролировать кодирование полученной строки во избежание непредвиденных ошибок?
Нет. Не существует надежного способа определения кодировки входящих данных *, поэтому обычной практикой является определение какой кодировки ожидается:
Если вы предоставляете какой-либо API или скрипт, который получает запросы от сторонних сайтов, вы обычно указываете в документации, какую кодировку вы ожидаете.
Если на вашем сайте есть формы, которые отправляются в сценарии, у вас обычно есть соглашение о том, какой набор символов используется для всего сайта.
Всегда существует вероятность появления поврежденных данных, если заявленная кодировка не соответствует фактической кодировке данных. В этом случае ваше приложение должно быть спроектировано таким образом, чтобы не было ошибок, за исключением того, что персонаж отображается неправильно.
Глядя на кодировку, в которой запрос объявляет входящие данные, как предлагает @Ignacio, это очень интересная идея, но я никогда не видел ее реализованной в мире PHP. Это ничего не говорит против этого, но вы спрашивали о распространенных практиках.
*: - это , часто можно проверить , имеет ли входящие данные определенную кодировку. Например, UTF-8 имеет определенные байтовые значения, которые не могут стоять самостоятельно, но образуют многобайтовый символ. Специальные символы ISO-8859-1 перекрываются с этими значениями и поэтому будут определены как недействительные в UTF-8. Но обнаружение совершенно неизвестной кодировки из произвольного набора данных практически невозможно.