Zend Framework и строковое покрытие с помощью iconv - PullRequest
4 голосов
/ 21 октября 2009

Один сайт был перенесен на другой сервер, где установлен Solaris и другие настройки iconv. Теперь, когда я проверяю что-либо с помощью функции «StringLength» из Zend Framework, мои сценарии завершаются с ошибкой:

Notice: iconv_strlen() [function.iconv-strlen]: Wrong charset, conversion from `UTF-8' to `UCS-4LE' is not allowed in /usr_files/phplibs/library/Zend/Validate/StringLength.php on line 213

Как я понял, сервер знает о "UCS-4LE", и это главная проблема.

Администратор сервера ответил, что может решить эту проблему. У вас есть идеи, как я могу настроить ZF на этом сервере?

Ответы [ 2 ]

1 голос
/ 21 октября 2009

библиотека iconv ожидала строку, закодированную в 'UCS-4LE', но получила ту, которую она обнаружила как 'UTF-8'. Возможно, на новом сервере у вас другая кодировка по умолчанию. Попробуйте передать третий параметр конструктору (как 'utf-8').

0 голосов
/ 19 сентября 2011

Несмотря на старую тему, эта тема возникла у меня сегодня при переходе на новый сервер под управлением 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 работает на новом сервере, мне не понятна.

...