解决PHP连接Proxysql出现乱码的问题
PHP使用Laravel框架连接Proxysql有时会出现乱码。
这种问题的出现一般是在PHP初始化连接的时候并没有设置正确的字符集,而在连接建立后使用Prepare Statement
的方式设置字符集导致的。
Proxysql本身支持设置字符集(如,SET NAMES utf8mb4),但是对于用Prepare Statement设置字符集的方式支持的并不好,所以会导出出现乱码。
解决该问题可以参考一下两种方法:
- 在
vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php
中添加PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4'
- 在
vendor/laravel/framework/src/Illuminate/Database/Connectors/MySqlConnector.php
中将
1 | protected function getHostDsn(array $config) |
修改为
1 | protected function getHostDsn(array $config) |
参考文章: