如何解决PHP 使用 MySQL 数据库中的百分号解码字符
我有一个 MysqL
数据库,其中有一个 latin1_swedish_ci
归类表,其中有一个 text
字段,其中包含 %u013A
、Ok%20bro
和 {{ 1}}。我了解这些数据包含特殊字符,例如空格和表情符号。如何在 %uD83D%uDE02%uD83D%uDE02
中正确显示这些文本?我尝试了许多 PHP
函数,例如 PHP
和 url_decode()
都无济于事。请帮忙。
编辑:表格是从 utf8_encode()
服务器填充的,该服务器在插入表格之前应用了函数 node js
。 https://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 举报,一经查实,本站将立刻删除。