Php 使用ñ;存储名称时出错;在拉维尔
当我尝试存储包含“ñ”和“')的记录时,Laravel抛出以下错误:Php 使用ñ;存储名称时出错;在拉维尔,php,laravel-5,Php,Laravel 5,当我尝试存储包含“ñ”和“')的记录时,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.
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\u general\u ci以及html格式
我用了这个变异子:
public function setNamesAttribute($value)
{
$this->attributes['names'] = strtr($value, 'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ', 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');
}
但它将其存储为“YA”而不是“n”
关于如何解决这个问题有什么建议吗
ps:我正在使用laragon和Laravel5.4尝试
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,
],
我更新了我的答案,并建议使用
utf8mb4
charset。开始我使用utf8mb4,然后我改为UTF-8。我觉得奇怪的是,它只接受“ñ”而不接受“ñ”