我在win7 (x64)上安装了标准的XAMPP。在过去的一个项目中,mysql编码与php编码不匹配,有时还会在其他编码中输出html,在这个项目中,我遇到了一些编码问题,因此我决定始终使用utf-8对所有内容进行编码。
我刚刚开始使用html标记,并且正在经历困难。
ISO_8859-1__保存的。后来我发现了这一点,多亏了Sherm Pendley的回答。我必须返回并将我的项目设置(设置为"ISO-8859-1")更改为所需的"UTF-8“。AddCharset UTF-8 .php<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />header('Content-Type:text/html; charset=UTF-8');该页面显然是在utf-8中提供的(火狐和chrome可以这样识别它),但是任何特殊的字符,比如é、á或¡,都只会显示为�。在查看源代码时也是如此。
删除上述编码设置时,将正确呈现所有字符,但所检测到的编码将显示windows-1252或ISO-8859-1,具体取决于浏览器。
怎么会这样?我很困惑。我本以为会有完全相反的行为。
欢迎任何建议,谢谢!
编辑:希望这能帮助更多的人。这是响应头(按照每个firebug)
HTTP/1.1 200 OK
Date: Sat, 26 Mar 2011 20:49:44 GMT
Server: Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By: PHP/5.3.1
Content-Length: 91
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8发布于 2011-03-26 21:09:05
当删除上述编码设置时,所有字符都将正确呈现,但所检测到的编码将根据浏览器显示windows-1252或ISO-8859-1。
那就是你真正要派的人。您的项目列表中的编码设置实际上不会以任何方式修改您的输出;它们所做的就是告诉浏览器在解释您发送的内容时应该采用什么编码。这就是为什么你要得到那些�-你告诉浏览器你发送的是UTF-8,但它实际上是ISO-8859-1。
发布于 2016-08-05 15:23:05
在我的例子中,数据库返回latin1,而浏览器期望utf8。
因此,对于MySQLi,我做到了:
mysqli_set_charset($dblink, "utf8"); 有关更多信息,请参见http://php.net/manual/en/mysqli.set-charset.php
发布于 2016-01-20 13:27:39
先告诉你的charset ..。就像这样
PDO("mysql:host=$host;dbname=$DB_name;charset=utf8;", $username, $password);注意:charset=utf8;部分。
希望能帮上忙!
https://stackoverflow.com/questions/5445137
复制相似问题