Несмотря на старую тему, эта тема возникла у меня сегодня при переходе на новый сервер под управлением xampp (Linux Suse, PHP 5.3.5, Zend Framework 1.11.10). Я воспроизвел вышеуказанную ошибку с помощью следующего тестового сценария:
<?php
echo iconv_strlen("hello");
?>
как в командной строке, так и в браузере. После некоторого устранения неполадок я обнаружил, что следующее «решило» непосредственную проблему одним из двух способов:
<?php
echo iconv_strlen("hello", 'utf-8');
?>
или
<?php
iconv_set_encoding("internal_encoding", "UTF-8");
echo iconv_strlen("hello");
?>
однако добавление iconv_set_encoding в ZF не сработало.
Изменение php.ini, чтобы сделать изменения постоянными, сработало для ZF
[iconv]
iconv.input_encoding = ISO-8859-1
iconv.internal_encoding = UTF-8
iconv.output_encoding = ISO-8859-1
Однако первоначальная причина, по которой iconv работает на новом сервере, мне не понятна.