Php 存储在MySQL数据库中的重音字符

Php 存储在MySQL数据库中的重音字符,php,mysql,Php,Mysql,我有一个webapp,它在MySQL数据库中存储法语文本(可能包括重音字符)。当直接通过PHP检索数据时,重音字符变为爱尔兰语。例如:quir�佛罗里达州�特莱斯特。 因此,我使用htmlentities()(或htmlspecialchars())将字符串转换为html实体,一切正常。然而,当我要输出同时包含重音字符和HTML元素的数据时,事情会变得更加复杂。例如,被转换为strong,因此浏览器无法理解 如何同时正确显示重音字符和正确解析HTML 谢谢大家! 也许你可以看看utf8\u en

我有一个webapp,它在MySQL数据库中存储法语文本(可能包括重音字符)。当直接通过PHP检索数据时,重音字符变为爱尔兰语。例如:
quir�佛罗里达州�特莱斯特。

因此,我使用
htmlentities()
(或
htmlspecialchars()
)将字符串转换为html实体,一切正常。然而,当我要输出同时包含重音字符和HTML元素的数据时,事情会变得更加复杂。例如,
被转换为
strong
,因此浏览器无法理解

如何同时正确显示重音字符和正确解析HTML


谢谢大家!

也许你可以看看
utf8\u encode()
utf8\u decode()
你应该使用UTF-8编码来存储数据库中的数据-然后一切都应该按预期工作,不需要
htmlentities()


确保所有方面都是utf-8—数据库、表编码和排序规则以及客户端和服务器端的连接。即使并非所有内容都是utf-8,事情也可能会正常工作,但在执行备份和恢复时,可能会出现可怕的故障-这就是我全面推荐utf-8的原因。

您可以将包含重音字符的数据库字段的排序规则设置为utf8\u general\u ci以支持它们


最终,您还可以设置数据库的排序规则,因此默认情况下设置所有字段。

当我们在SQL数据库中遇到波兰语字符时,我们必须这样做,希望MySQL也有类似的功能。-1这可能有效,但它可能不起作用,因为您认为它起作用的原因是,您没有解决编码问题的根本原因。请阅读
utf8.*
实际做了什么,以及如何解决问题。+1请看下面的答案:查看检查列表。@martin clayton,谢谢链接。清单上的所有内容都得到了尊重。。。此外,数据以UTF-8的形式正确地存储在数据库中(即,当我直接查询数据库时,没有奇怪的字符)。有没有想过是什么导致了这个问题?(另外,HTML中硬编码的重音字符在不使用HTML实体的情况下正确显示)根据OcuS的建议,我使用了utf8_encode(),一切正常。无论如何,还是很有趣。谢谢你们的帮助,伙计们!请注意,如果您已经使用错误的编码设置将数据写入数据库,那么它将已经损坏,并且将来对编码的修改将没有帮助。它需要一个相当复杂的“mysqldump”和还原来修复格式错误的数据。我已经仔细检查了我的PHP代码和MySql设置,最后唯一有帮助的是在连接到数据库时指定编码:
new PDO('MySql:host=yourserver;dbname=yourdb;charset=UTF8',dbuser',password')