我正在使用基於使用ISO-8859-1字符集的ZF1的遺留項目。此外,服務器的默認編碼是ISO。新模塊應該使用ZF2來實現。默認編碼如何對於逃犯等等,在全球範圍內設置爲ZF2以外的其他任何東西都不是UTF-8?在Zend Framework 2中將默認編碼設置爲ISO
回答
如果您直接在模塊中使用escapers,這將是一個問題。如果僅使用視圖助手,則可以選擇設置編碼。
每個助手視圖助手(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編碼。如果您的任何模塊或任何第三方模塊使用助手視圖助手,則將使用ISO-8859-1編碼。
感謝您指點我正確的方向。這似乎基本上工作。但是如果你使用「StringTrim」過濾器,它仍然依賴於utf-8。我猜是因爲StringTrim Filter沒有將編碼轉換爲acount。您可以通過以下測試重現它。這可以以某種方式克服,或者我需要寫我自己的StrinTrim過濾器 $ filter = new \ Zend \ Filter \ StringTrim(); var_dump($ filter-> filter('äöüas')); – griesi
似乎也適用於StringToLower和HtmlEntities過濾器以及像StringLength這樣的驗證器。我無法看到如何在Bootstrap上設置全局。到目前爲止,似乎每次使用時都必須明確設置。真的嗎? – griesi
- 1. Zend Framework中的默認主頁設置
- 2. Zend Framework:設置默認響應部分
- 3. 在Zend Framework 2中設置PHP設置
- 4. Zend Framework 2設置默認值,如果輸入無效
- 5. 爲Zend Framework 2控制器設置默認佈局的理想位置?
- 6. php設置編碼默認在瀏覽器中編碼iso-8859-1
- 7. 如何在Zend Framework 2中設置BjyAuthorize?
- 8. 如何在Zend Framework 2中設置sql_mode?
- 9. Zend Framework 2:在選擇列表中將選項設置爲「selected」
- 10. 在Heroku中將UTF-8設置爲默認字符串編碼
- 11. Zend Framework 2設置Zend \ InputFilter setRequired()
- 12. 在Zend框架中將默認上下文設置爲XML
- 13. Angular 2 - 默認硬編碼時在下拉列表中設置默認值
- 14. 在Zend Framework中將默認的.phtml擴展名改爲.php?
- 15. Zend Framework中的默認用戶設置策略
- 16. Zend SMTP默認設置
- 17. Zend Framework的默認值表
- 18. Zend Framework的默認錯誤
- 19. 更改Zend Framework 2的默認模板解析器行爲
- 20. 爲Zend Framework設置.htaccess
- 21. 在Zend Framework中刪除默認模塊的默認路由
- 22. Zend Framework:如何在配置文件中設置默認郵件傳輸?
- 23. 將document.title設置爲默認
- 24. Zend Framework中的動態默認模塊
- 25. Heroku and Rails:如何將utf-8設置爲默認編碼
- 26. Zend Framework 2:使用MvcEvent設置佈局
- 27. Zend Framework 2(ZF2)動態區域設置
- 28. 將PHP默認編碼設置爲utf-8?
- 29. 將Qt默認編碼設置爲UTF-8
- 30. Heroku和Java:如何將utf-8設置爲默認編碼postgresql
到目前爲止,似乎沒有可靠的方法來全局更改編碼。要走的道路似乎是使用utf-8在ZF2中實現新功能,並在數據庫中繼續使用latin1編碼。可以在 http://zend-framework-community.634137.n4.nabble.com/ZF2-Set-default-encoding-to-ISO-in-Zend-Framework-2-td4657670.html上找到更多信息。 cid = 1350893416289-363 – griesi