php - 在 laravel 中检测到字段名的无效 UTF-8
问题描述
我正在存储来自第三方的一些响应。有时数据没有存储到数据库中。我检查了 Laravel 日志并得到了一些错误。我正在使用 laravel 5.5 和 mongo db。
任何帮助世界都会受到赞赏。谢谢。
Laravel 日志
[2018-09-10 11:40:50] production.ERROR: Detected invalid UTF-8 for fieldname "shipping_city": München
[2018-09-10 11:41:03] production.ERROR: Detected invalid UTF-8 for fieldname "_id": Ã$zjmêá¹ëmy×
[2018-09-10 11:48:16] production.ERROR: Method [error] does not exist on [App\Http\Controllers\PaymentController]. {"userId":"5b0d2b6f12236ca36a2282ed","exception":"[object] (BadMethodCallException(code: 0): Method [error] does not exist on [App\\Http\\Controllers\\PaymentController]. at /var/www/vhosts/cabin-holiday.frontend/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:68)
支付控制器.php
$payment = new Payment;
foreach($_POST as $key => $value) {
if(Schema::hasColumn($payment->getTable(), $key)){
if(is_array($value)) {
$payment->{$key} = $value[1];
} else {
$payment->{$key} = $value;
}
}
}
$payment->save();
解决方案
有几种方法可以处理。其中之一是使用utf8-encode
string utf8_encode ( string $data )
支付控制器.php
$payment = new Payment;
foreach($_POST as $key => $value) {
if(Schema::hasColumn($payment->getTable(), $key)){
if(is_array($value)) {
$payment->{$key} = utf8_encode($value[1]);//changes
} else
{
$payment->{$key} = utf8_encode($value);//changes
}
}
}
$payment->save();
推荐阅读
- android - 无法在 Android (Kotlin) 中使用 ObjectBox 保存相同的数据
- r - 将包含月份的日期/时间作为字符串转换为日期格式
- visual-studio - Nuget 包源设置
- php - HTML 渲染延迟 - Laravel
- ios - 使用 Alamofire 解码 json 时出错
- json - Swift 4 可解码 var 可以是 Bool 或自定义类型
- android - 应用程序被杀死时Android BroadcastReceiver不工作
- node.js - 使用 node.js 的简单 AWS Lambda 函数
- java - Eclipse 部署组件找不到项目的条目
- bootstrap-4 - ng-bootstrap 依赖和警告