Проблема с выводом, непонятный символ
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