在Zend Framework 2中将默认编码设置为ISO

时间:2012-10-17 09:51:56

标签: zend-framework2

我正在开发基于ZF1的遗留项目,该项目使用ISO-8859-1 charset。服务器默认编码也是ISO。应使用ZF2实现新模块。如何进行默认编码,例如对于转发器等,在ZF2中全局设置为UTF-8以外的任何其他东西吗?

1 个答案:

答案 0 :(得分:1)

如果您直接在模块中使用转义器,这将是一个问题。如果仅使用视图助手,则可以选择设置编码。

每个自举视图帮助器(EscapeCssEscapeHtml等)都从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编码的所有插件。如果您的任何模块或任何第三方模块使用escaper视图助手,将使用ISO-8859-1编码。