gpt4 book ai didi

php - ZendFramework 在插入到 mysql 时从第一个非 a-z 字符开始剪切字符串

转载 作者:行者123 更新时间:2023-11-29 05:45:55 25 4
gpt4 key购买 nike

当我使用 Zend_Form 将一些数据插入到具有非 a-z 字符(如 chrząszcz)的数据库时,它会剪切我这个字符串并在我保存的数据库中只有 chrz

MySql 中的所有内容都设置为 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
如何让这个过滤器正常工作?

最佳答案

回复您的评论:

No. var_dump of $form->getValue() gives chrz�szcz. When var_dump a $_POST superglobal it gives correct chrząszcz.

这个有用吗?

$testArray = array('name' => 'chrząszcz');

$unitTable = new Model_Unit_Table();
$unit = $unitTable->createRow();
$unit->setFromArray($testArray);
$unit->save();

如果是,您的问题可能与 Zend_Form 相关。

编辑:

您的过滤器需要使用 mb_strtolower()而不是 strtolower() .

编辑2:

试试这个:

$filter = new Zend_Filter_StringToLower();
$filter->setEncoding('UTF-8');

关于php - ZendFramework 在插入到 mysql 时从第一个非 a-z 字符开始剪切字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2074022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com