php即使使用utf8mb4\u unicode\u ci,mysql也会出现“字符串值不正确”错误

jfewjypa  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(336)

我的数据库存储了garry的mod服务器(源代码专用服务器)的服务器主机名,有时它们似乎包含 utf8mb4_unicode_ci 无法存储。这些字符是什么?如何解决问题?

insert into `servers` (`steamid64`, `script_id`, `ip_address`, `port`, `uses`, `hostname`, `maxplayers`, `map`, `last_active`) values (XXXXXXXXXXXXXXX, 1599, XXXXXXXXXXX, 27095, 1, [FR] USA vs F?d?ration | Apocalypse | SeriousRP | TSF, 20, rp_evocity_dc, CURRENT_TIMESTAMP())
``` `Incorrect string value: '\xE9d\xE9rat...'` ```
Illuminate\Database\QueryException: SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xE9d\xE9rat...' for column 'hostname' at row 1 (SQL: insert into `servers` (`steamid64`, `script_id`, `ip_address`, `port`, `uses`, `hostname`, `maxplayers`, `map`, `last_active`) values (XXXXXXXXXXXXXXX, 1599, XXXXXXXXXXXXXXXX, 27095, 1, [FR] USA vs F?d?ration | Apocalypse | SeriousRP | TSF, 20, rp_evocity_dc, CURRENT_TIMESTAMP()))
  File "app/Http/Controllers/PayloadController.php", line 243, in GetPayload
    $Server -> save();
  File "public/index.php", line 55
    $request = Illuminate\Http\Request::capture()
suzh9iv8

suzh9iv81#

你希望 ...édérat... ?
你的客户使用的是拉丁文1,而不是utf8mb4。
也许最简单的修复方法是告诉mysql您在客户端使用的是latin1。这最好在连接字符串中完成(你用的是pdo还是mysqli?)
注意:客户机的编码和数据库表中的编码是独立的。转码是自动的。但在客户端声明编码时必须正确。

相关问题