PHP vs UTF-8

Пишу скрипт на PHP. Должен принять данные в одной кодировке, обработать их и отдать в UTF-8.
Чтобы не писать версию под каждую кодировку входных данных ещё одну версию скрипта, было решено переводить любую в UTF-8 а дальше работать с ним.

Но стали вылазить косяки:
    echo strlen('тест'); // 8
    echo strlen('тестtest'); //12

Вопрос: как заставить PHP думать буквами, а не байтами?
  • Вопрос задан
  • 3143 просмотра
Решения вопроса 1
@Ura78
Была похожая проблема. Помог параметр mbstring.func_overload в php.ini
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
mb_strlen в частности.
Ответ написан
@LastDragon
> Вопрос: как заставить PHP думать буквами, а не байтами?
Ответ: никак. Для работы с многобайтными кодировками есть расширение mbstring (http://ru2.php.net/manual/en/book.mbstring.php), реализующее необходимые функции.
Ответ написан
Комментировать
zizop
@zizop
Почитайте вот эту статью на хабре: Определение кодировки текста в PHP — обзор существующих решений плюс еще один велосипед. Там есть решение. Это если mb_convert_encoding(...mb_detect_encoding()) вам не поможет.
Ответ написан
Kindman
@Kindman
Если известен и заранее определен алфавит (а не просто «любые символы любого языка»), и если этот алфавит полностью перекрывается какой-нибудь одной однобайтовой кодовой таблицей, то можно с помощью iconv() из UTF-8 преобразовать в однобайтовую кодировку, а затем снова в UTF-8.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы