gpt4 book ai didi

php - php中utf-8编码的问题

转载 作者:行者123 更新时间:2023-11-29 01:47:34 25 4
gpt4 key购买 nike

我相信另一个与 utf-8 相关的问题......

我正在使用 php 更新 mysql 数据库中的数据,然后在站点的其他位置显示该数据。以前我遇到过 utf-8 问题,在浏览器中查看时,特殊字符显示为问号,但这个问题似乎略有不同。

我要输入许多包含 è 字符的记录。如果我直接在数据库中输入它,那么它会正确显示在页面上,所以我认为这意味着 utf-8 内容被正确输出。

但是,当我尝试通过 php 更新数据库中的值时,è 字符被替换。相反出现的是 & Atilde ; ¨ (没有空格)在浏览器中显示为 è

我将数据库中的表设置为使用 UTF-8。我相信这是正确的,因为如前所述,如果我通过 phpMyAdmin 更新数据库,一切正常。同样,我为页面设置了字符编码,这似乎是正确的。我也在运行 sql 语句“SET NAMES 'utf8';”在尝试更新数据库之前。

有人对问题出在哪里有任何其他想法吗?

非常感谢

最佳答案

是的。

你的角色是LATIN SMALL LETTER E WITH GRAVE .如您所见,在 UTF-8 中,该字符被编码为两个字节 0xC30xA8

但是在许多默认的、只有单字节的西方编码(例如 ISO-8859-1)中,这个多字节字符被解码为两个单独的字符,LATIN CAPITAL LETTER A WITH TILDEDIAERESIS .请注意它们是如何编码为 C3 的和 A8在 ISO-8859-1 中?

此外,看起来 PHP 正在通过 htmlentities() 处理这些字符分别导致 è

那么,你的代码到底哪里出了问题?好吧,htmlentities() 可以自己完成这一切,因为它的第三个参数是一个编码名称 - 您可能没有正确设置为 'UTF-8'。但它也可能是其他一些字符串处理函数。 (注意:作为一般规则,将 HTML 实体存储在数据库中是个坏主意 - 这一步应该留待显示时使用)

还有许多其他方法可以让您在 php 中使用 UTF-8 - 我建议使用 the cheatsheet并确保您的 body 状况良好。

关于php - php中utf-8编码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883504/

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