php转不存在特殊字符,PHP str_replace无法使用特殊字符

为什么这不能按预期工作:

echo str_replace("é","é","Fédération Camerounaise de Football");

结果:

"Fédération Camerounaise de Football"

我期望有:

"Fédération Camerounaise de Football"

解决方法:

你做错了.该字符串不正确,需要替换,仅使用UTF-8进行编码.

您所要做的就是utf8_decode(‘FédérationCamerounaise de Football’).

更新:

您正在看到Camerunaise deFédération作为输出,因为您正在以UTF-8格式两次传递数据.

观察:

以UTF-8格式保存的file1.php:

echo "Fédération Camerounaise de Football";

输出:

Fédération Camerounaise de Football

现在,如果您告诉浏览器您正在使用UTF-8,它将直接显示内容:

以UTF-8格式保存的file2.php:

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

echo "Fédération Camerounaise de Football";

输出:

Fédération Camerounaise de Football

完善.

但是,您做的事情甚至更糟.您具有UTF-8编码的字符串,并且正在通过将其写入UTF-8编码的文件来再次对其进行编码.

以UTF-8格式保存的file3.php:

echo "Fédération Camerounaise de Football";

输出:

Fédération Camerounaise de Football

真是一团糟.让我们看是否可以用str_replace修复它,使情况变得更糟:

以UTF-8格式保存的file4.php:

echo str_replace("é","é","Fédération Camerounaise de Football");

输出:

Fédération Camerounaise de Football

如您所见,我们对其进行了“修复”.有点.那就是你在做什么.您正在将ƒƒ转换为é,尽管您没有看到它,因为您的编辑器不允许您看到编码背后的真实符号,但浏览器却可以.

让我们使用ASCII重试一次:

以ASCII格式保存的file5.php:

echo str_replace("é","é","Fédération Camerounaise de Football");

输出:

Fédération Camerounaise de Football

魔法!浏览器现在拥有所有功能.但是真正的解决方案是什么?好.如果您的PHP文件中有一个硬编码的字符串,那么您应该只编写Camerunaise de Football足球联合会,而不要把这该死的事情弄错了.但是,如果要从另一个文件或数据库中获取它,则应选择以下两个课程之一:

>使用utf8_decode()将获取的数据转换为所需的输出.

>不进行任何转换,而是使用header(‘Content-Type:text / html; charset = utf-8’);告诉浏览器您正在以UTF-8格式打印内容,因此它将正确显示内容.

标签:character-encoding,utf-8,php,internationalization

来源: https://codeday.me/bug/20191029/1958304.html

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值