Lumen 和 UTF-8 编码
Lumen and UTF-8 encoding
我在查询我的 MySQL 数据库后尝试 return JSON 响应时遇到 Lumen 5.3 问题。
我的方案和我的所有表都编码在 utf8_general_ci
中,这是给我带来麻烦的代码示例:
public function getUserByMail(Request $request){
$user = app('db')->table('user')->select('id','lastName', 'firstName','mail','status')->where('mail',$request->input('userMail'))->first();
return response()->json(
array('id' => $user->id,
'lastName' => $user->lastName,
'firstName' => $user->firstName,
'mail' => $user->mail,
'status' => $user->status));
}
有时(但只是有时),这段代码在调用json()
方法时抛出异常Malformed UTF-8 characters, possibly incorrectly encoded
我不知道该怎么做才能解决这个问题,有人知道吗?
我终于明白发生了什么:因为我是 运行 Lumen on Wamp 安装,我遇到了这个错误,因为配置加载问题。
Lumen 框架使用DotEnv
加载指定数据库连接信息的.env
文件。但在某些情况下(我怀疑PHP multi-threading支持出现故障),我的请求使用了Laravel(forge@localhost
)的默认数据库登录访问数据库,它默默地失败了(遇到的 PDOException
没有被 Lumen 异常处理程序捕获)并且我的 $user
变量没有包含我所期望的,这导致了 UTF-8 错误。
Lumen GitHub (here) 中引用了此问题。
我使用这个 强制加载我的配置解决了这个问题。
我在查询我的 MySQL 数据库后尝试 return JSON 响应时遇到 Lumen 5.3 问题。
我的方案和我的所有表都编码在 utf8_general_ci
中,这是给我带来麻烦的代码示例:
public function getUserByMail(Request $request){
$user = app('db')->table('user')->select('id','lastName', 'firstName','mail','status')->where('mail',$request->input('userMail'))->first();
return response()->json(
array('id' => $user->id,
'lastName' => $user->lastName,
'firstName' => $user->firstName,
'mail' => $user->mail,
'status' => $user->status));
}
有时(但只是有时),这段代码在调用json()
方法时抛出异常Malformed UTF-8 characters, possibly incorrectly encoded
我不知道该怎么做才能解决这个问题,有人知道吗?
我终于明白发生了什么:因为我是 运行 Lumen on Wamp 安装,我遇到了这个错误,因为配置加载问题。
Lumen 框架使用DotEnv
加载指定数据库连接信息的.env
文件。但在某些情况下(我怀疑PHP multi-threading支持出现故障),我的请求使用了Laravel(forge@localhost
)的默认数据库登录访问数据库,它默默地失败了(遇到的 PDOException
没有被 Lumen 异常处理程序捕获)并且我的 $user
变量没有包含我所期望的,这导致了 UTF-8 错误。
Lumen GitHub (here) 中引用了此问题。
我使用这个