PHP / Apache问题:英镑符号(£)的处理问题

3
我在MySQL数据库中存储了一些文本,例如"Tom给Sarah £5买书"。直到上周一,当从网站中提取时,它完美地显示为"Tom给Sarah £5买书"。
现在,即使我没有更改/安装/卸载/更新任何内容,它也停止工作了。
数据库中的旧值显示为"Tom给Sarah £5买书"。 在将此文本保存到数据库的表单上,它曾经保存为"Tom给Sarah £5买书",现在保存为"Tom给Sarah ?5买书",并且在网站上也以此方式显示("Tom给Sarah ?5买书")。
是什么原因导致这种情况?我正在努力解决这个问题。我一直在尝试使用utf8_encode/utf8_decode,并在页面上使用ISO-8859-1和UTF-8字符集,尽管每种方法都会产生不同的结果(例如"?5"/"£5"/"£5"/"�5"/"☐5"),但都不正确。
问题不能是MySQL,因为我可以在phpMyAdmin中看到£符号,并且£符号在另一个Web服务器上工作正常。
求助!

解决显示问题的一种方法是在数据库中将英镑符号存储为HTML实体(£)。 - Felix Kling
你的数据库字段使用什么编码?你在输出中使用什么编码,如何声明? - Gumbo
数据库是latin1_swedish_ci,该数据库与第二个Web服务器和英镑符号一起正常工作,因此必须是PHP或Apache的问题。 - Tim
您的浏览器的“页面属性”/“页面信息”对话框中指定的输出页面编码是什么? - Pekka
目前浏览器的编码是ISO-8859-1,我已经尝试将其设置为UTF-8,但仍然无法解决问题。 - Tim
2个回答

3

不要重复这个问题,我会给你留下一个链接:

UTF-8 all the way through…


如果您按照chazomaticus的答案中提到的步骤进行操作,您的问题将会解决。

在您的具体问题中,数据库/表/字段编码可能是问题所在。


不幸的是,如果我把数据库改成UTF-8,会对目前正常工作的Web服务器造成问题,所以不想这样做。 - Tim
@Tim:然后在保存到数据库之前对内容进行HTML编码,在获取时解码。这是我能给你的唯一建议。 - Alix Axel

1
如果你的数据库设置为utf8,那可能还不够。确保连接字符集设置为UTF8。执行此查询:'SET NAMES utf8;'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接