как избежать не-UTF-8 символов в строках

grigori

( ͡° ͜ʖ ͡°)
Команда форума
как избежать не-UTF-8 символов в строках

Postgres по умолчанию использует UTF8, и мне это подходит.
Он проверяет строки и не допускает данные с недопустимыми для utf8 символами.
В принципе, это хорошо, но ошибки запроса из-за того, что строка не той кодировки мне не нравятся.

Я думаю, какие есть способы привести данные пользователя к UTF8.
Вариантов несколько.

1. Выставить кодировку сайта UTF8.
Минус - пользователь может послать что угодно.
Сейчас я фильтрую через filter_input(INPUT_GET, $field,FILTER_SANITIZE_SPECIAL_CHARS);
возможно, стоит добавлять FILTER_FLAG_ENCODE_LOW и FILTER_FLAG_ENCODE_HIGH, чтобы не допускать символы за пределами 7 бит.

2. Работать с пользователем в Latin 1 и на лету конвертировать в utf8 через iconv.input_encoding / iconv.internal_encoding
минусы - оверхед и, теоретически, проблемы с другими кодировками

3. проверять строки на соответствие UTF8-таблице. Я не нашел как это сделдать просто. Кто-нибудь знает?
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума

DiMA

php.spb.ru
Команда форума
Ужасно расточительно на каждый чих с $_REQUEST рег гонять.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
да, конечно еще client_encoding, т.е. перекодировку делает postgres

статья по ссыке занимательная, спасибо

хочется, конечно, и перекодировки избежать, и от некорректных данных защитить :)
 
Сверху