我有PHP 5.5.9和MySQL 5.5.43 Innodb。这是在Kubuntu LTS /etc/mysql/my.cnf中
printf("当前字符集:%s n",mysqli_character_set_name($ conn));
当前字符集:latin1
我试过了
默认字符集= utf8
首先但是然后我的mysql服务器没有重启
然后我尝试了
字符集服务器= utf8
然后我的mysql shell没有启动
我该如何解决这个问题?我已经与
init_connect ='设置名称utf8'
解决了非root用户的问题,但是字符集保持不变(它仅显示为非特权用户UTF8,它仍然是Latin1)。
如果smnd可以告诉我在哪里应该使用utf8mb4?还在my.cnf文件中吗?我将表放在utf8中,并且已经将我正在使用的表迁移到utf8mb4 ...
另一个问:适用于Linux(Kubuntu)服务器的IS:
https://www.youtube.com/watch?v=3M1Wpw4uOoM
请帮助我,谢谢lilaum.com的Gregor
PHP手册说:
MySQLnd always assumes the server default charset. This charset is sent during connection hand-shake/authentication, which mysqlnd will use.
MySQLnd是PHP 5.4及更高版本随附的MySQL本机驱动程序。
不幸的是,尽管已使用以下条目配置了/etc/mysql/my.cnf,但即使在我的系统中(Debian Jessie 8.3上带有MySQL 5.5.47的PHP 5.6.17),我也必须确认
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
mysqlnd似乎不假定服务器默认字符集(utf8),但将连接字符集设置为latin1并整理为latin1_swedish(考虑到MySQL AB是一家瑞典公司,可能是默认值)。
因此,从PHP应用程序进行连接时,似乎没有永久的方法来设置utf8字符集。你必须打电话
$mysqli->set_charset("utf8")
每次连接后。可以将其嵌入自定义的" dbconnect" PHP函数中,以提供某种抽象层。
mysqli_set_charset('utf8')。
对于root连接,将忽略init_connect。
utf8mb4实际上是utf8的超集。中文和新表情符号都需要它,再加上一些晦涩的字符集。
是否可以在全球范围内一劳永逸地做到这一点?
而utf8mb4是真正的utf8 ...我想我必须在mysql中进行更改,因为我已经在php.ini中添加了default_charset =" UTF-8",但没有成功。 如果(我相信是)可以一次在全球所有服务器上更改此指令,请更新我,谢谢...
在全局范围内,在my.cnf中,这可能会为将来的操作建立utf8mb4:character_set_server=utf8mb4 这将需要以其他方式进行处理。