我正在开发基于ZF1的遗留项目,该项目使用ISO-8859-1 charset。服务器默认编码也是ISO。应使用ZF2实现新模块。如何进行默认编码,例如对于转发器等,在ZF2中全局设置为UTF-8以外的任何其他东西吗?
答案 0 :(得分: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编码的所有插件。如果您的任何模块或任何第三方模块使用escaper视图助手,将使用ISO-8859-1编码。