E9
- это 233 в десятичном виде. Это не действительный байт ASCII (только 0-127), но это é
в ISO-8859-1 (Latin1). При использовании mb_convert_encoding
вы можете указать несколько кодировок (например, UTF-8 и ISO-8859-1).
Это должно это исправить:
mb_convert_encoding($str, 'UTF-8', 'UTF-8,ISO-8859-1');
С помощью следующего скрипта:
$str1 = 'Documents%20partag%E9s';
$str2 = 'Documents%20partag%C3%A9s';
var_dump(mb_convert_encoding(urldecode($str1), 'UTF-8', 'UTF-8,ISO-8859-1'));
var_dump(mb_convert_encoding(urldecode($str2), 'UTF-8', 'UTF-8,ISO-8859-1'));
Я получаю:
string(19) "Documents partagés"
string(19) "Documents partagés"