微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP 使用 MySQL 数据库中的百分号解码字符

如何解决PHP 使用 MySQL 数据库中的百分号解码字符

我有一个 MysqL 数据库,其中有一个 latin1_swedish_ci 归类表,其中有一个 text 字段,其中包含 %u013AOk%20bro 和 {{ 1}}。我了解这些数据包含特殊字符,例如空格和表情符号。如何在 %uD83D%uDE02%uD83D%uDE02 中正确显示这些文本?我尝试了许多 PHP 函数,例如 PHPurl_decode() 都无济于事。请帮忙。

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

解决方法

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

我确实找到了 an answer to decode the other characters here 并且通过一些额外的代码我设法解码了你的代码:

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)));

这将返回“??”。

那么也许您需要两次解码?首先是 rawurldecode(),然后是上面的代码。需要进行一些实验,我不能这样做,因为您没有提供大量文本可供使用。

解决此问题的最佳方法是找出文本的编码方式。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。