Laravel 5.1 utf-8保存到数据库

时间:2015-09-30 13:17:59

标签: unicode utf-8 laravel-5.1

我正在尝试将记录保存到数据库。 从输入中获取值并将其保存到数据库时没有问题,例如:

  

$ request-> input('name')是一个值为'سلام'的输入

$provider->name = $request->input('name');
$provider->copyright_email = 'test@yahoo.com';
$provider->save();

但是当我尝试从我的控制器中给出值时出现问题。 名字会保存'?'进入数据库:

$provider->name = 'سلام';
$provider->copyright_email = 'test@yahoo.com';
$provider->save();

我已经将此代码添加到config / database.php:

'charset' => 'utf8',
'collation' => 'utf8_persian_ci',

5 个答案:

答案 0 :(得分:7)

  1. 将您的数据库文件配置为utf8_unicode_ci
  2. 检查文件config/database.php

    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    
    1. 确保您的Mysql数据库设置为utf8且MySQL的utf8mb4更好

    2. 确保您的文件字符设置为UTF-8 without BOM

    3. 我个人认为您在IDE中遇到问题,请尝试使用Atom。

答案 1 :(得分:2)

将数据库文件配置为utf8_unicode_ci

检查文件config/database.php

'charset'   => 'utf8',
'collation' => 'utf8_genarel_ci',

答案 2 :(得分:0)

我遇到了同样的问题,接受的答案对我没有帮助。 在这里我是如何以这种方式解决问题的:

转到数据库中的表格,检查“整理”,将其更改为:

utf8mb4_unicode_ci  

将其应用于表格中的每个字段。

这可能对某人有所帮助。 :)

答案 3 :(得分:0)

您还可以使用以下代码设置utf8 ->字符集('utf8')

答案 4 :(得分:0)

我的问题 使用

'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',

不起作用

但可用于迁移

$table->charset = 'utf8';
$table->collation = 'utf8_persian_ci';