当我尝试存储包含'ñ'和'''的记录时,Laravel会抛出以下错误:
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: '\xE3\xB1es' for column 'names' at row 1 (SQL: insert into `clients` (`cedula`, `names`, `email`) values (5454545, Pablito Nu�es, email@dominio.com))
数据库位于utf8_general_ci,以及html。
我使用了这个mutator:
public function setNamesAttribute($value)
{
$this->attributes['names'] = strtr($value, 'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ', 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
}
但它将其存储为“YA”而不是“n”。
关于如何解决这个问题的任何建议?
ps:我正在使用laragon和laravel 5.4
答案 0 :(得分:0)
尝试utf8mb4
字符集。此外,您需要将连接字符集设置为utf8mb4。因此,将 config / database.php 中的'charset'
更改为'utf8mb4'
。
'charset' => 'utf8mb4',
例如:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_general_ci',
'prefix' => 'pre_',
'strict' => false,
'engine' => null,
],