用£替换£

I'l*_*ack 3 php replace character-encoding

我试图替换££,它没有用.

我试过了:

echo str_replace("£", "£", "£3 Discount Discount");
Run Code Online (Sandbox Code Playgroud)

我也尝试过html_entity_decode哪些也行不通.

cmb*_*ley 5

尝试将UTF-8编码的数据显示为非UTF-8时,这是一个问题.您需要确保所有字符编码都是一致的,如果没有,那么您需要在它们之间进行适当的转换.最简单的方法是确保绝对一切都是UTF-8.这包括:

  • 保存在数据库中的数据(MySQL的字符集/整理)
  • 客户端与数据库的连接(使用SET NAMES UTF-8)
  • 输出到浏览器(header('Content-Type: text/html; charset=utf-8');)
  • 包含代码的PHP脚本(是的,这有时会产生影响)

在检查上面的字符集之前,我首先建议检查数据库中没有任何mojibake(例如使用phpMyAdmin或命令行客户端).如果您发现数据库实际包含£,那么我建议将上述相同的逻辑应用于数据库的任何输入机制(包括HTML表单的字符编码).

(注意:我在整个答案中都假设了MySQL.)