Строковое значение возвращается из sql-запроса в utf-8. Нужно взять n первых символов и отписать в респонс. Если тупо substr'ом, то есть шанс попасть на половину utf-символа, что приведет к появлению уродского вопросика в ромбике (или что у кого). Как этого избежать? Можно, конечно, отконвертить в cp1251, а потом уже сабстринг обратно в утф, но это ж лишний движняк. Не хотелось бы. Есть идеи? Думаю, проблема не нова)
engager UTF-8 - двухбайтовая кодировка, вот и режь в два раза больше байт. Нужно получить строку размером в 5 символов? Получай: PHP: <?php $cut = substr("Привет, мир!", 0, 5*2); ?>
блин#ь, ну ленивы* шк@льники, гугля на вас нет! от 1 до 4 байт. латиница укладывается в один, русская кириллица использует два байта, азиатские козяблики в 4. Код (Text): UTF-8 encodes each character (code point) in 1 to 4 octets (8-bit bytes). The first 128 characters of the Unicode character set (which correspond directly to the ASCII) use a single octet with the same binary value as in ASCII. пользуйтесь mb_* функциями правильно и спите спокойно. UTF-8 не единственная несколькобайтная кодировка. чтобы всё работало правильно, надо не забывать про mb_internal_encoding()
artoodetoo +1 к блин#ь Всё верно - mb_* + mb_internal_encoding магическим образом превратит UTF-8 в самый типичный скучный string
Hight и не говори, одни и те же вечно вопросы. Я недавно в этом разделе отвечал http://www.php.ru/forum/viewtopic.php?p=231090#231090