数据库和PHP客户端的编码设置必须匹配。如果没有,则会出现问号,而不是 B?r 中的合法非ascii文本,而不是Bär。
当我创建数据库时,我使用
CREATE DATABASE mydatabase CHARACTER SET utf8;
当我在PHP脚本中打开连接时(省略对错误条件的必要检查),我写了
$conn = mysqli_connect($host,$username,$password,mydatabase);
mysqli_set_charset($conn,'utf8')
在某些服务器上,丢弃mysqli_set_charset($conn,'utf8')
会导致出现问号。在这些服务器上mysqli_character_set_name($conn)
会返回utf8
以外的编码。
我可以可靠地设置Apache和Nginx以确保PHP客户端在连接到MariaDB / MySQL时始终使用UTF8(mysqli_character_set_name()
总是返回utf8
),或者我应该始终遵循{{1如果我想使用非ascii文本数据,请使用mysqli_connect()
吗?
答案 0 :(得分:1)
每次建立连接时都应该使用mysqli_set_charset吗?
是。
它一般与Apache或PHP无关,而是使用"语言" PHP特别使用mysql。并谈判哪种语言"必须使用,mysqli_set_charset()
函数用于。