我有PHP 5.5.9和MySQL 5.5.43 Innodb。这是在Kubuntu LTS /etc/mysql/my.cnf
printf(“当前字符集:%s \ n”,mysqli_character_set_name($ conn));
当前字符集:latin1
我试过
default-character-set = utf8
首先,但我的mysql服务器没有重启
然后我试过
character-set-server = utf8
然后我的mysql shell没有启动
我该如何解决这个问题?我已经成功了 init_connect ='SET NAMES utf8' 为非root用户解决问题,但charset保持不变(它只显示为非特权用户UTF8,它仍然是Latin1)。
如果(一个大的if)smnd可以告诉我应该在哪里使用utf8mb4?还在my.cnf文件中?我把表格放在utf8中并将我正在使用的表格迁移到utf8mb4 ......
另一个问:适用于Linux(Kubuntu)服务器的IS: https://www.youtube.com/watch?v=3M1Wpw4uOoM
请帮助我,谢谢,来自lilaum.com的Gregor
答案 0 :(得分:2)
MySQLnd始终采用服务器默认字符集。这个charset是在连接握手/身份验证期间发送的,mysqlnd将使用它。
MySQLnd是PHP 5.4及更高版本中包含的MySQL本机驱动程序。
不幸的是,我必须确认即使在我的系统中(在Debian Jessie 8.3上使用MySQL 5.5.47的PHP 5.6.17),尽管已经使用以下条目配置了/etc/mysql/my.cnf
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
mysqlnd似乎没有假设服务器默认字符集(utf8),但是使用collate latin1_swedish 将连接字符集设置为 latin1 (考虑到MySQL AB,可能是默认值)瑞典公司)。
因此,从PHP应用程序连接时似乎没有永久的方法来设置 utf8 字符集。你必须致电
$mysqli->set_charset("utf8")
每次连接后。这可以嵌入到自定义的“dbconnect”PHP函数中,以提供一种抽象层。
答案 1 :(得分:1)