最近,我将一个网站从运行apache 2的专用ubuntu服务器迁移到运行nginx的专用debian 6服务器。
这个网站使用的是CakePHP 2.0 + ichikaway的mongodb插件 (所以使用MongoDB)
由于我更改了服务器,所以当我试图保存带有特殊字符(如“fran ais”或“èeéa”)的“标记”子文档时,会有一个奇怪的通知。
它适用于其他控制器/模型/集合(例如,当我保存带有特殊字符的新注释时)。
我已经强迫nginx使用utf-8,我所有的网站页面都有元字符集utf-8,所有的.php (和.ctp)脚本都是用utf-8编码的。我还试图强迫utf8_encode()和utf8_encode(utf8_decode()) (是的,这很糟糕.)字符串错误也有相同的错误。
这里是通知: (注意文档没有保存)
Notice (1024): non-utf8 string: fran��ais [APP/Plugin/Mongodb/Model/Datasource/MongodbSource.php, line 715]
与上下文:
MongodbSource::update() - APP/Plugin/Mongodb/Model/Datasource/MongodbSource.php, line 715
Model::save() - CORE/Cake/Model/Model.php, line 1614
FiltersController::edit() - APP/Plugin/Administration/Controller/FiltersController.php, line 137
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 473
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 107
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 89
[main] - APP/webroot/index.php, line 96
我祈祷“堆积如山的上帝”来救我,我真的不知道该去哪里让它像以前一样工作了。
谢谢你的阅读。
发布于 2013-05-06 22:36:13
我解决了这个问题,增加了以下几行:
for($i=0; $i<=count($values)-1; $i++){
if(is_string($values[$i]))
$values[$i] = utf8_encode($values[$i]);
}
就在../Pluggin/Mongodb/Model/DataSource/MongodbSource.php之后
if (!$this->isConnected()) {
return false;
}
在更新和创建函数中
https://stackoverflow.com/questions/11209673
复制相似问题