Laravel UTF-8到数据库

Mig*_*ens 7 php laravel eloquent

我正在使用Eloquent将一个新人保存到我的数据库中.人名包含特殊字符é,但不提交.这是我的步骤和结果.

echo Input::get('firstname'); // Miguél
Run Code Online (Sandbox Code Playgroud)

这给了我这个

米格尔

当我开始使用雄辩时,会发生以下情况.

$person = new Person();
echo $person->firstname = Input::get('firstname'); 
Run Code Online (Sandbox Code Playgroud)

这产生以下结果

migul

知道可能出了什么问题吗?这些是laravel中的配置设置

在此输入图像描述

这是我在phpmyadmin中的数据库

在此输入图像描述

谢谢

Mar*_*łek 11

我不认为它与数据库有任何共同之处.

当你使用:

$person = new Person();
echo $person->firstname = Input::get('firstname'); 
Run Code Online (Sandbox Code Playgroud)

你不在这里使用数据库.您只需将属性分配给Person类(可能使用Eloquent),但您不会将任何内容放入数据库并从数据库中获取任何内容,因此编码问题不可能与数据库本身有任何共同之处

在我看来潜在的问题 - 你已经在Person类中为firstname属性定义了mutator,因为你有小写的(当你从大写字母输入它时大写字母)所以你可能会使用类似的函数strtolower,你应该使用mb_strtolower转换UTF-8字符串而不用一个问题.

  • @MiguelStevens对于UTF-8字符串的任何操作,您应该使用`mb_`函数来处理国家字符而不会出现问题 - http://php.net/manual/en/ref.mbstring.php (3认同)