e和é具有不同的ASCII值

问题描述 投票:-1回答:1

我正在使用htmlentities转换特殊字符,但是遇到了2种不同的é

<?php
header('Content-Type: text/html; charset=utf-8');
echo htmlentities("é")."\n";
echo htmlentities("é")."\n";
?>

输出:

é
&eacute;

我使用此输出ASCII值

echo ord("é");
echo ord("é");

输出

101
195

是否有一种方法可以强制htmlentities将e转换为可用字符?

php character-encoding ascii
1个回答
0
投票

我们在这里有2个不同的UTF-8字符串。

<?php
var_dump("é" === "e\u{301}");
var_dump("é" === "\u{e9}");
//bool(true) bool(true)

尝试自我:https://3v4l.org/QnHvg

第一个字符串包含2个字符,ASCII“ e”和Unicode U+0301。第二个字符串包含字符U+00E9

这些字符串可以很容易地用str_replace替换。建议使用unicode表示法(PHP 7+)以避免误解。

$string = str_replace("e\u{301}","\u{e9}",$string);
© www.soinside.com 2019 - 2024. All rights reserved.