У меня есть приложение, которое касается клиентов со всего мира, и, естественно, я хочу, чтобы все, что попадало в мои базы данных, было кодировано в кодировке UTF-8.
Основная проблема для меня в том, что я не знаю, какая кодировка источника какой-либо строки будет - она может быть из текстового поля (использование <form accept-charset="utf-8">
полезно, только если пользователь действительно отправил форму), или это может быть из загруженного текстового файла, поэтому я действительно не могу контролировать вход.
Мне нужна функция или класс, который гарантирует, что материал, поступающий в мою базу данных, является, насколько это возможно, кодировкой UTF-8. Я пробовал iconv(mb_detect_encoding($text), "UTF-8", $text);
но у этого есть проблемы (если вход "fiancée", он возвращает "fianc" ). Я пробовал много вещей =/
Для загрузки файлов мне нравится идея попросить конечного пользователя указать кодировку, которую они используют, и показать им предварительный просмотр того, как будет выглядеть вывод, но это не помогает против неприятных хакеров (на самом деле это может сделать их жизнь немного легче).
Я прочитал другие SO-вопросы по этому вопросу, но они, похоже, имеют тонкие различия, такие как "Мне нужно разобрать RSS-каналы" или "Я удаляю данные с веб-сайтов" (или, действительно, "Вы не можете" ).
Но должно быть что-то, что, по крайней мере, имеет хорошую попытку!