PHP解码MySQL数据库中带有百分比符号的字符



我有一个带有latin1_swedish_ci排序规则表的MySQL数据库,该数据库有一个包含%u013AOk%20bro%uD83D%uDE02%uD83D%uDE02等文本的text字段。据我所知,这些数据包含空格和表情符号等特殊字符。如何在PHP中正确显示这些文本?我尝试过许多PHP函数,如url_decode()utf8_encode(),但都没有成功。请帮忙。

编辑:表是从node js服务器填充的,该服务器在插入到表之前应用函数escape()。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/escape

我将%20识别为URL查询中使用的空间。你需要rawurldecode()来解码它。

我确实在这里找到了解码其他字符的答案,通过一点额外的代码,我成功地解码了你的:

function decodeEmoticons($src) {
$replaced = preg_replace("/\\u([0-9A-F]{1,4})/i", "&#x$1;", $src);
$result = mb_convert_encoding($replaced, "UTF-16", "HTML-ENTITIES");
$result = mb_convert_encoding($result, 'utf-8', 'utf-16');
return $result;
}
$r = "%uD83D%uDE02%uD83D%uDE02";
echo decodeEmoticons(str_replace('%','\',strtolower($r)));

这返回"0"&";。

也许你需要两个装饰?首先是rawurldecode(),然后是上面的代码。需要做一些实验,但我做不到,因为你没有给出很多文本。

最好的方法是找出文本是如何编码的。

相关内容

  • 没有找到相关文章

最新更新