我的数据库字段设置为utf8_general_ci,我的网站编码为utf8。
£符号出现在黑色钻石上,中间有一个问号。
我尝试将其更改为数据库中的£
并输出£
我尝试了一个字符串替换:
$row['Information'] = str_replace("£", "£", $row['Information']);
似乎没什么用,有什么想法吗?
答案 0 :(得分:4)
我尝试将其更改为数据库中的
£
别。数据库应包含原始文本,而不包含HTML编码的内容。 HTML编码的时间(使用htmlspecialchars()
)是指在输出模板阶段将一些原始文本插入HTML,而不是之前。即使你让它工作,你也只能修复一个角色;其他107025个非ASCII字符仍然会中断。
显然这里的编码不匹配;你必须确保在任何地方使用相同的编码(最好是UTF-8),特别是:
<meta>
或header()
,最好是两者;如果您只使用<meta>
来设置它,并且服务器配置不正确可以设置自己的charset
覆盖你的;)mysql_set_charset
。不幸的是,这些设置都没有默认为UTF-8。
答案 1 :(得分:1)
在与数据库通信之前,您需要发送查询:
SET NAMES 'UTF-8'
它告诉数据库对此连接上的所有查询使用utf8编码。