希望这里有一些关于Zend Framework的知识比我更多,我一直试图寻找答案,但我无法在任何地方找到任何东西。
问题:
使用Zend_Db将Zend_Form的内容添加到数据库时,字符æøå被替换为øÃ|Ã¥
系统
为使其有效而进行了修改(但没有)
的application.ini
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.username = "//Brukernavn//"
resources.db.params.password = "//Passord//"
resources.db.params.dbname = "//Database//"
resources.db.params.charset = "utf8"
resources.db.params.driver_options.1002 = "SET NAMES utf8"
resources.db.isDefaultTableAdapter = true
对于我添加的所有表格
->setAttrib('accept-charset', 'utf-8');
在Bootstrap.php中我放置了以下代码:
$view->setEncoding('UTF-8');
$view->doctype('XHTML1_STRICT');
$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
数据库设置为utf8_general_ci
任何人都有关于如何让它工作的提示?
Soulution:
这是PHP 5.3.0和5.3.1中的一个错误(http://bugs.php.net/bug.php?id=47224 所以我选择降级到5.2.11,所有这些都像魅力一样。
感谢Pekka和Greg K指出我正确的方向。
答案 0 :(得分:3)
收听您的描述后,数据将以UTF-8的形式从表单中删除。可能是您的数据库表本身仍然是latin1
?
答案 1 :(得分:1)
对我有用的解决方案:
以上所有数据库内容,以及将UTF-8编码headMeta标记添加到布局中。
所以,layout.phtml看起来像这样:
<?php echo $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<?php echo $this->headMeta(); ?> <!-- This one does the trick! -->
</head>
<body>
<?php echo $this->layout()->content; ?>
</body>
</html>
和Bootstrap.php一样:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->setEncoding('UTF-8');
$view->doctype('XHTML1_STRICT');
$view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8');
}
}
现在像åäö这样的瑞典语字母显示正确,虽然没有尝试过,但我认为中文或其他任何内容都会出现。
答案 2 :(得分:0)
使用htmlentities($ val)输出编码值
答案 3 :(得分:0)
我遇到的问题是我有一个使用htmlentities()
的装饰器,如果没有指定则默认为ISO-8859-1
编码,而不是UTF-8
用于PHP版本&gt; = 5.4
答案 4 :(得分:0)
在函数_initDatabase()中必须添加以下代码。
$db->getConnection()->exec("SET NAMES 'utf8'");
您可以在此处参考:http://osdir.com/ml/php.zend.framework.db/2008-04/msg00012.html
答案 5 :(得分:0)
我在我的网站上遇到同样的问题,我在application.ini文件中添加了charset解决了这个问题。
这里我添加以下代码。
resources.db.params.charset = "utf8"
resources.db.params.driver_options.1002 = "SET NAMES utf8"
resources.db.isDefaultTableAdapter = true