Проблема с выводом, непонятный символ

1. Жека (20.10.2009 / 16:36)
Начал писать библиотеку на php+mySQL. И вот проблема при выводе самой статьи. Если вывожу статью полностью, то всё норм, а вот если начинаю её раскидывать по ~700 символов на страницу начинает выскакивать квадратик в конце статьи. как его убрать? Всё в UTF8, как и таблица, так и её поля. Страницы также в UTF8. Ниже код.

2. Жека (20.10.2009 / 16:39)
Блин, не влазиет.
http://upwap.ru/598051

3. Lugaro (20.10.2009 / 17:31)
таблицу покажи

4. Lugaro (20.10.2009 / 17:41)
квадратик потому что в утф попадаеш по середине буквы

5. Жека (20.10.2009 / 17:58)
и чё делать? перекодировать? таблицу?

6. Lugaro (20.10.2009 / 18:01)
выризай с текста нужный кусок с помощю mb_substr($dan['msg'], 0, 700,'UTF-8');
и тут $sql=mysql_query("SELECT * FROM `icq_info` WHERE `id`='".$_GET['id']."'"); не мешало бы фильтровать ид

7. Констaнтин (20.10.2009 / 18:06)
Нeкoтoрыe симвoлы в utf-8 зaнимaют 2 бaйтa. И y тeбя скoрeй всeгo рaздeлeниe пoпaдaeт прямo в симвoл. Кoд нe смoтрeл. Испoльзyй mb_* фyнкции для нoрмaльнoй рaбoты с utf-8. /// вoт нaдo жe... тaк дoлгo писaл))

8. Lugaro (20.10.2009 / 18:19)
7 )))

9. Жека (20.10.2009 / 20:45)
нефига не помогает...пришлось конвертить в win-1251, а потом обртано в UTF-8.

10. Lugaro (20.10.2009 / 21:19)
Да ну не может быть, если использовать mb_substr с пометкой утф-8 всё нормально выводит, код покажи

11. Жека (20.10.2009 / 22:00)
если использую mb_substr, то выводит нормально, но считает когда 10(как нужно), а когда 14-16. Видемо 2-х байтные считает за 2 символа.

12. Жека (20.10.2009 / 22:04)
И выходит трабла в навигации, текст уже закончился, а страницы внизу бьёт в 2 раза больше, т.к. считает вместо 500~700 символов.

13. Жека (20.10.2009 / 22:08)
//$dan['msg']-сообщение
//$n-страница
//$nav=700-по сколько выводить
 echo mb_substr($dan['msg'], $n*$nav-$nav, $nav,'UTF-8'); 


14. Констaнтин (20.10.2009 / 22:43)
подсчет символов-то у тебя наверное осуществляется просто через strlen(), ты сделай через mb_strlen().

15. Lugaro (21.10.2009 / 11:34)
добавлю к 14, только кодировку указывай, либо просто в верху файла пиши mb_internal_encoding('UTF-8');

16. Констaнтин (21.10.2009 / 16:35)
Нo кoдирoвкy yкaзывaть нe oбязaтeльнo. eсли ee нe yкaзывaть, тo испoльзyeтся внyтрeнняя кoдирoвкa фaйлa

17. Жека (21.10.2009 / 18:04)
15, 16 спасибо ребята, попробую.

URL: https://visavi.net/topics/1908