Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我必须使用set_字符集(“utf8”),即使所有内容都是utf-8编码的?(MySQLi-PHP)_Php_Utf 8_Mysqli_Character Encoding_Collation - Fatal编程技术网

为什么我必须使用set_字符集(“utf8”),即使所有内容都是utf-8编码的?(MySQLi-PHP)

为什么我必须使用set_字符集(“utf8”),即使所有内容都是utf-8编码的?(MySQLi-PHP),php,utf-8,mysqli,character-encoding,collation,Php,Utf 8,Mysqli,Character Encoding,Collation,我的表的排序规则是utf8\u general\u ci 我的页面使用UTF-8编码(无BOM) 在我的页面中,我的等价元标记将字符集设置为utf8 我的数据中有土耳其语字符 当我输出它们时,它并没有像它应该的那样显示它们,而是当我执行$db->set_字符集(“utf8”),它可以工作 为什么我必须使用$db->set_字符集(“utf8”)即使所有内容都是utf-8编码的?数据在MySQL中存储为utf-8,但PHP的客户端连接排序规则不是。这就是为什么必须在PHP中为DB连接使用set\u

我的表的排序规则是utf8\u general\u ci

我的页面使用UTF-8编码(无BOM)

在我的页面中,我的等价元标记将字符集设置为utf8

我的数据中有土耳其语字符

当我输出它们时,它并没有像它应该的那样显示它们,而是当我执行
$db->set_字符集(“utf8”),它可以工作

为什么我必须使用
$db->set_字符集(“utf8”)即使所有内容都是utf-8编码的?

数据在MySQL中存储为utf-8,但PHP的客户端连接排序规则不是。这就是为什么必须在PHP中为DB连接使用
set\u charset

更新 php.ini:默认字符集utf-8

.htaccess:AddDefaultCharset utf-8

与您的请求无关,但您是否在HTTP响应中的
内容类型中设置字符集?我使用此选项:
是,但您应该在HTTP头中设置。谢谢,但我可以通过php.ini或类似的方式进行更改吗?我查看了mysql服务器的变量,所有的排序和编码都设置为utf-8,所以我知道问题不在mysql服务器上。感谢更新:我在php.net页面()中检查了php.ini变量的定义,它与header('Content-type:utf-8')和
相同,我也检查了这个:我找不到任何mysql.default\u charset变量,所以我想我将使用“set\u charset”函数。谢谢你的回复,我很感激。@Dada:我在上的“数据处理”下找到了
default\u charset