使用MySQL时出现UTF8问题

我知道之前有人问过。但我已经用尽了我能找到的答案中给出的选项,所以我会再次提出问题,希望有一些我忽略的事情。

首先,我的文件是UTF8编码的,我的XML标头(我使用的是XHTML)将页面声明为UTF8。

其次,连接数据库后我做的第一件事就是发送查询“SET NAMES utf8”。

我还执行了这个语句:“SHOW VARIABLES LIKE'character_set%'”并将所有这些变量设置为utf8。

我已经在每个涉及的表上执行了SHOW CREATE TABLE table_name,并确保它们的字符集是utf8。

When I look at the values in the database it looks like UTF8-encoding, with codes beginning with &. This does not feel right, I don't know why they are stored like this. I did try to echo them out on my page with PHP's utf8_decode but this did not work.

我还能做什么?

(如果标题中的问题不明确,则äå和ö等字符在浏览器中无法正常显示。)

0
额外
意见: 2
当你说他们“没有正确显示”时,你的意思是什么?出现了什么?您是否一直在使用自第1天以来描述的步骤,或者您是否已经在数据库中存储了包含这些字符的文本后才实施它们? (在您采取措施正确处理非ascii字符之前已存储的文本可能会被错误编码存储。)
额外 作者 Hammerite,
这听起来像一个PHP问题。你的PHP字符编码设置为什么?
额外 作者 David Barker,
phpwact.org/php/i18n/… 这可能会给你一些见解
额外 作者 David Barker,
“不正确”意味着无意义的字符。
额外 作者 C. E.,

3 答案

好。这是一个PHP问题,正如所建议的那样,它源于我错误地使用htmlentities而不是htmlspecialchars。使用这些功能和utf8字符时要洁净! htmlspecialchars是你可能想要的。

1
额外

当您向数据库插入东西时,通过 utf8_decode()运行它,当您从数据库中取出结果时,通过 utf8_encode()运行它。

还要确保在浏览器编码设置中选择了UTF-8编码或自动检测。

0
额外
你桌子的确切整理是什么?
额外 作者 budwiser,
真?如果您认为它会有所帮助,我会尝试一下,但考虑到db应该在utf8中,这没有意义吗?
额外 作者 C. E.,
这些表是UTF8(如果你在它上面执行SHOW CREATE TABLE,默认字符集= utf8)。我不知道如何找到准确的整理,也不知道它是什么意思。
额外 作者 C. E.,

你有没有尝试过

header('Content-Type: text/html; charset=utf-8'); ?

0
额外