В PHP мы можем использовать mb_check_encoding()
, чтобы определить, действительно ли строка UTF-8. Но это не портативное решение, так как требуется, чтобы расширение mbstring было скомпилировано и включено. Кроме того, он не укажет нам, какой символ недопустим.
Есть ли регулярное выражение (или другой другой 100% -ный переносимый метод), который может соответствовать недопустимым байтам UTF-8 в данной строке. Таким образом, эти байты могут быть заменены при необходимости (сохранение двоичной информации, например, при создании тестового выходного XML файла, который включает двоичные данные). Поэтому преобразование символов в UTF-8 потеряло бы информацию. Итак, мы можем конвертировать:
"foo" . chr(128) . chr(255)
В
"foo<128><255>"
Итак, просто "обнаруживая", что строка недостаточно хороша, нам нужно будет определить, какие символы недопустимы.