0

私のブートストラップは、すべてのビューのエンコーディングを設定します。

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

ただし、これは私のフォームバリデーターのエンコーディングを設定しません。はStringLengthデフォルトのエンコーディングを使用し(どちらかはわかりません)、発音区別符号を2文字としてカウントします。

バリデーターを作成するときにオプションを設定できることは知ってい'encoding' => 'utf-8'ますが、(巨大な)アプリケーション全体ですべてのバリデーターを更新するのはちょっと厄介です。すべてのバリデーターのエンコーディングを同時に設定する方法はありますか?

4

3 に答える 3

2

Content-Typeを非常に早く送信し、HTML-Documentで定義した場合、通常は問題はありません。

PHPでは、エントリポイント(Zend Frameworkでは「index.php」ファイル)でエンコーディングを送信できます。

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(BOMなし)で保存します

于 2012-03-09T12:09:14.483 に答える
1

ZF 1.1x では、StringLengthバリデーターは以下を使用しますiconv_strlen

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

試してみるべきことの 1 つは、ini_set(またはiconv_set_encoding('internal_encoding', $encoding);) を呼び出すことです。

于 2012-03-09T10:45:50.580 に答える
1

少し遅いかもしれませんが、これが完全な答えです:

mb_internal_encoding('utf-8');
iconv_set_encoding('internal_encoding', 'utf-8');
于 2012-05-24T00:00:18.567 に答える