我正在开发一个基于 ZF1 的遗留项目,它使用 ISO-8859-1 字符集。服务器的默认编码也是 ISO。新模块应使用 ZF2 实现。如何在 ZF2 中将默认编码(例如转义符等)全局设置为除 UTF-8 之外的任何内容?
问问题
1258 次
1 回答
1
如果您直接在模块中使用转义符,这将是一个问题。如果您只使用视图助手,则可以选择设置编码。
每个转义视图助手(EscapeCss
等EscapeHtml
)都从Zend\View\Helper\Escaper\AbstractHelper
. 这个类有一个方法setEncoding()
。因为编码不是在所有助手实例之间共享的,所以您必须单独设置它们,但您可以在那里设置编码。
例如,您可以在引导期间设置正确的编码。假设您有您的应用程序模块:
<?php
namespace Application;
use Zend\Mvc\MvcEvent;
class Module
{
public function onBootstrap(MvcEvent $e)
{
$app = $e->getApplication();
$sm = $app->getServiceManager;
$manager = $sm->get('ViewHelperManager');
$plugins = array(escapehtml', 'escapehtmlattr', 'escapejs', 'escapecss', 'escapeurl');
$encoding = 'ISO-8859-1';
foreach ($plugins as $name) {
$plugin = $manager->get($name);
$plugin->setEncoding($encoding);
}
}
}
这应该将所有插件更正为 ISO-8859-1 编码。如果您的任何模块或任何 3rd 方模块使用转义视图助手,则将使用 ISO-8859-1 编码。
于 2012-10-18T09:27:53.147 回答