Проблема с сохранением русских букв после обработки htmlentities

dmvlad

Новичок
Проблема с сохранением русских букв после обработки htmlentities

В движке netoffice все данные перед вставкой в БД обрабатываются функцией htmlentities($tpm, ENT_QUOTES, $htmlEntityCharset);

Все VARCHAR поля хорошо обрабатывают при этом русские буквы, а поля TEXT - просто обрубают их. Латиница при этом сохраняется корректно.

Что может быть не так, куда копать?

PS - если заменить htmlentities на htmlspecialchars - то тогда все ок записывается, но может что-то можно сделать иначе?
 

Фанат

oncle terrible
Команда форума
во-первых, зачем делать иначе, чем не устраивает htmlspecialchars?
во-вторых, зачем вообще перед вставкой в БД данные обрабатывать такой функцией?
в-третьих, что значит "обрубают"?
 

dmvlad

Новичок
первое не устраивает т.к. все исходники придется править, а там десятка два файлов. Плюс после этого апдейты будут сложно происходить.
второе не знаю, таковы исходники открытого ПО и я глубоко не копал, возможно это взамен экранирования кавычек.
"обрубают" значит,что если в текстовом поле есть кириллица, то в итоге записывается в БД пустое поле
 

fixxxer

К.О.
Партнер клуба
во первых var_dump сразу после htmlentities, если кодировка указана правильная все должно быть ок
во вторых проверь соответствия кодировок
phpfaq.ru/charset
в т ч на этих text полях
 

Beavis

Banned
Перед вставкой в БД делать htmlspecialchars и htmlentities неправильно.
Перед вставкой в базу данные надо пропускать через intval или mysql_real_escape_string, а при ВЫВОДЕ через htmlspecialchars.
 

fixxxer

К.О.
Партнер клуба
сказано же движок у него такой, предлагаешь весь говнокод в мире переписывать?
 

DiMA

php.spb.ru
Команда форума
Тут проблема - б.д. уже испорчена говнокодом.
Вопрос: какие идеи по восстановлению с минимальными затратами?
Ответ: обратить испорченные данные в базе данных обратной к htmlentities функции + по всему коду htmlentities на htmlspecialchars заменить (убого, но прокатит).
 
Сверху