gpt4 book ai didi

php - LAMP 堆栈中 UTF-8 和 ISO-8859-1 之间的编码问题

转载 作者:行者123 更新时间:2023-11-28 23:51:26 24 4
gpt4 key购买 nike

我正在将网站(PHP、MYSQL)更改为另一台服务器,并在 Linux - Apache 环境中对其进行配置。问题是某些页面显示字符编码错误。数据在mysql中存储为 latin1_swedish_ci ,涉及的php文件也编码为 iso-8859-1 。但是,如果我进行查询,PHPMyAdmin 会正确显示此数据。HTTP header 显示“text/html;charset=iso-8859-1”,所以没有问题。

我不知道去哪里解决这个问题。我不知道这是 Apache 的问题,还是 PHP 以某种方式试图将数据读取为 utf-8 而不是实际的数据。

这是当前“SHOW VARIABLES LIKE '%char%';”的输出

+------------------------+---------------- ----------+
|变量名 |值(value) |
+------------------------+-------------------- ------+
|字符集客户端 |编码器 |
|字符集连接 |编码器 |
|字符集数据库 |拉丁语1 |
|字符集文件系统 |二进制 |
|字符集结果 |编码器 |
|字符集服务器 |拉丁语1 |
|字符集系统 |编码器 |
|字符集目录 |/usr/share/mysql/字符集/|
+------------------------+-------------------- ------+

最佳答案

您的数据未存储为 latin1_swedish_ci,而是存储为 latin1。也称为 iso-8859-1;他们是一样的东西。瑞典语部分是整理。这是一个常见的混淆点。

您与数据库的连接,至少是您用来显示系统变量的连接,设置为 utf8。那不是 latin1。

当您建立与数据库的连接时,您应该立即发出此命令,无论是在 php 中还是在使用交互式客户端程序时。

SET NAMES latin1

您可以在这里阅读:https://dev.mysql.com/doc/refman/5.6/en/charset-connection.html

关于php - LAMP 堆栈中 UTF-8 和 ISO-8859-1 之间的编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32509432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com