Никаких бубнов, все правильно! С подобным столкнулся только в версии mySQL старше 5.0 (хотя камрады говорят и на четверки проскакивал глюк), причем только на Unix.
Почем?
MySQL 5 использует для транзакций UTF8, причем не зависимо в какой кодировке хранится поле. Если PHP принимает стринг в UTF и расценивает его ка CP1251, то все символы смещаются за адрес #FF, и получают в 1251 это значение, или проще говоря символ "?"
Как?
просто! Нужно сказать mySQL в чем передавать строку.
(возможно соврал, сейчас нет перед глазами)" SET CODEP='cp1251' ; "
Этот запрос вставить перед запросом на получение полей в function/bd.php для phpBB, мимо самой функции в db.php не пройдете
Удачи.
Примечание, для mySQL CODEP можно назначтиь и KOI8-R, что пофигу для PHP старше 3, т.к. есть мнение, что латиница в стрингах конвертится на лету