1

我正在开发一个基于 ZF1 的遗留项目,它使用 ISO-8859-1 字符集。服务器的默认编码也是 ISO。新模块应使用 ZF2 实现。如何在 ZF2 中将默认编码(例如转义符等)全局设置为除 UTF-8 之外的任何内容?

4

1 回答 1

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 编码。如果您的任何模块或任何 3rd 方模块使用转义视图助手,则将使用 ISO-8859-1 编码。

于 2012-10-18T09:27:53.147 回答