我的引导程序为所有视图设置编码:
protected function _initView () {
$view = new Zend_View();
// snip...
$view->setEncoding('utf-8');
// snip...
return $view;
}
但是,这不会为我的表单验证器设置编码。 StringLength
使用其默认编码(我不确定它是哪个),它将变音符号视为两个字符。
我知道我可以在创建验证器时设置'encoding' => 'utf-8'
选项,但是在我的整个(巨大的)应用程序中更新所有验证器有点麻烦。有没有办法同时为所有验证器设置编码?
答案 0 :(得分:2)
如果你很早就发送了Content-Type并在HTML-Document中定义了它,通常不会有问题。
在PHP中,你可以在入口点发送编码(在Zend Framework中发送“index.php”-File):
header( 'Content-Type: text/html; charset=utf-8' );
在HTML-Layout中,您应该将META-Tag放在HEAD-Tag中:
<!-- 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" />
当然,以UTF-8(无BOM)保存项目中的每个源文件(HTML + PHP文件)
答案 1 :(得分:1)
在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);
)。
答案 2 :(得分:1)
可能有点晚了,但这将是完整的答案:
mb_internal_encoding('utf-8');
iconv_set_encoding('internal_encoding', 'utf-8');