即使使用utf8mb4_unicode_ci,MySQL也会"Incorrect string value"错误



我的数据库存储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: 'xE9dxE9rat...'

IlluminateDatabaseQueryException: SQLSTATE[HY000]: General error: 1366 Incorrect string value: 'xE9dxE9rat...' 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 = IlluminateHttpRequest::capture()

您希望...édérat...

您的客户端使用的是latin1,而不是utf8mb4。

也许最简单的修复方法是告诉mysql您正在客户端中使用latin1。这最好在连接字符串中完成。(你用的是PDO还是mysqli?(

注意:客户端的编码和数据库表中的编码是独立的。代码转换是自动的。但是在客户端中声明编码时必须是正确的。

相关内容

最新更新