установить глобальную кодировку в Zend Framework - PullRequest
0 голосов
/ 09 марта 2012

Мой загрузчик устанавливает кодировку для всех представлений:

protected function _initView () {
    $view = new Zend_View();
    // snip...
    $view->setEncoding('utf-8');
    // snip...
    return $view;
}

Однако это не устанавливает кодировку для моих валидаторов форм. StringLength использует кодировку по умолчанию (я не уверен, что это), и он считает диакритические знаки двумя символами.

Я знаю, что могу установить опцию 'encoding' => 'utf-8' при создании валидатора, но довольно неудобно обновлять все валидаторы во всем (огромном) приложении. Есть ли способ установить кодировку для всех валидаторов одновременно?

Ответы [ 3 ]

2 голосов
/ 09 марта 2012

У вас обычно не должно быть проблем с этим, если вы отправили Content-Type очень рано + определили его в HTML-документе.

В PHP вы можете отправить кодировку в Entry-Точка (которая находится в Zend Framework как «index.php» -File):

header( 'Content-Type: text/html; charset=utf-8' );

В вашем HTML-макете вы должны поместить META-тег в свой HEAD-тег:

<!-- do this only in: HTML5 -->
<meta charset="utf-8" />

<!-- do this only in: HTML4 -->
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

И, конечно, сохранить каждый исходный файл (HTML + PHP-файлы) в проекте в формате UTF-8 (без спецификации)

1 голос
/ 24 мая 2012

Может быть немного поздно, но это будет полный ответ:

mb_internal_encoding('utf-8');
iconv_set_encoding('internal_encoding', 'utf-8');
1 голос
/ 09 марта 2012

В ZF 1.1x валидатор StringLength использует iconv_strlen:

int iconv_strlen(string $str [, string $charset = ini_set("iconv.internal_encoding")])

Итак, нужно попробовать позвонить ini_set (или iconv_set_encoding('internal_encoding', $encoding);).

...