我每次建立连接时都应该使用mysqli_set_charset吗?

时间:2016-09-22 06:33:12

标签: php mysqli character-encoding

数据库和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()吗?

1 个答案:

答案 0 :(得分:1)

  

每次建立连接时都应该使用mysqli_set_charset吗?

是。
它一般与Apache或PHP无关,而是使用"语言" PHP特别使用mysql。并谈判哪种语言"必须使用,mysqli_set_charset()函数用于。