编码问题:英镑符号显示为 <?> 符号

AJF*_*DIA 2 database encoding character utf-8

我的数据库字段设置为 utf8_general_ci,我的网站编码为 utf8。

英镑符号以黑色钻石的形式出现,中间有一个问号。

我尝试将其更改为£在数据库中,它只是输出了 £

我尝试了字符串替换:

  $row['Information'] = str_replace("£", "£", $row['Information']);
Run Code Online (Sandbox Code Playgroud)

似乎没有任何效果,有什么想法吗?

bob*_*nce 5

我尝试将其更改为£在数据库中

别。数据库应该包含原始文本,而不是 HTML 编码的内容。进行 HTML 编码(使用htmlspecialchars())的时间是在输出模板阶段而不是之前将一些原始文本插入 HTML 时。即使你让这个工作,你也只能固定一个字符;其他 107025 个非 ASCII 字符仍然会中断。

很明显,这里的编码不匹配;您必须确保在任何地方都使用相同的编码(最好是 UTF-8),特别是:

  • 您保存 PHP 文件的编码,如果它包含任何非 ASCII 字符;
  • 在输出页面上声明的字符集(通过 Content-Type<meta>header(),最好两者兼而有之;如果您只使用 a<meta>来设置它并且服务器配置不正确,它可能会设置自己的charset覆盖您的);
  • 数据库中列的编码(每列都有自己的排序规则,所以只在表上设置是无效的);
  • PHP 用于与 MySQL 对话的编码。这应该使用mysql_set_charset.

不幸的是,这些设置都没有默认为 UTF-8。