$userTb = new My_Tb_User(); //Child of Zend_Db_Table_Abstract
$row = $userTb->find(9)->current();
$row->name = 'STÖVER';
$row->save();
第9行的名称列值ST
的内部用户表是否存储而不是STÖVER
?
Ö
是UTF-8
支持的德语字符。如果我使用phpmyadmin手动输入'STÖVER',它将被正确存储。
创建数据库适配器时,我还传递了值为utf8
的charset参数,但仍然没有运气!
答案 0 :(得分:3)
如果您阅读utf8_encode
的手册条目,则将ISO-8859-1编码的字符串转换为UTF-8 。函数名称是一个可怕的误称,因为它表明某种必要的自动编码。事实并非如此。如果您的源代码保存为UTF-8并且您将“STÖVER”分配给$string
,那么$string
将保存以UTF-8编码的字符“STÖVER”。无需采取进一步行动。实际上,尝试将UTF-8字符串(错误地)从ISO-8859-1转换为UTF-8会使其变得混乱。
utf8_encode('STÖVER');
中查看此问题
答案 1 :(得分:2)
使用utf8_encode
这是一种不好的做法,这会给您的应用带来很多复杂性。尝试通过查找源来解决问题。
Ssome的想法:
default_encoding
参数)<form>
字符集问题(检查它是否以utf-8格式发送)<html>
字符集问题(你的html文件中没有设置enctype)Content-encoding:
问题(Apache发送了错误的编码)。