【发布时间】:2010-01-15 19:01:37
【问题描述】:
当我将一些带有Zend_Form 的数据插入到带有非a-z 字符(如chrząszcz)的数据库中时,它会剪切我这个字符串,并且在数据库中我只保存了chrz。
MySql中的Everything设置为utf8_general_ci,与MySql连接时我调用SET CHARACTER SET 'utf8',文件也是UTF-8。
我不知道该怎么办。
我还编写了独立脚本,它插入并正确读取了我的字符串。 ZendFramework 读起来也是正确的。问题仅在于插入。
有人知道怎么解决吗?
更新:
如果我插入数据:
$db->query("INSERT INTO unit SET name = 'chrząszcz'");
在ZendFramework 中有效。问题在于以这种方式插入:
$unitTable = new Model_Unit_Table();
$unit = $unitTable->createRow();
$unit->setFromArray($form->getValues());
$unit->save();
更新 2:
问题在于使用Zend_Filter_StringToLower - 它将字符串chrząszcz 修改为chrz�szcz。
如何让这个过滤器正常工作?
【问题讨论】:
-
$form->getValues() 是否返回正确的字符串?
-
没有。
$form->getValue()的var_dump给出chrz�szcz。当var_dumpa$_POSTsuperglobal 它给出正确的chrząszcz。
标签: php mysql zend-framework utf-8 character-encoding