urldecode搜索_SET NAMES与PDO charset
中国数据虚拟主机做 urldecode搜索,先确定网站编码。用浏览器 F12 看 Response Headers 的 Content-Type charset,看页面 meta charset,看数据库表的字符集。三个一致就不用转码,不一致就在搜索处理时转成数据库编码。
AJAX 搜索乱码:AJAX 请求编码和页面一致,通常没问题。如果 AJAX 返回 JSON 乱码,PHP 输出前加 header('Content-Type: application/json; charset=utf-8'),json_encode 只支持 UTF-8,数据要先转成 UTF-8。jQuery 的 $.ajax 默认 UTF-8。
参考(PHP搜索转码代码): ``` <?php // 接收关键词 $keyword = isset($_GET['keyword']) ? trim($_GET['keyword']) : ''; // 自动转码为UTF-8 $keyword = mb_convert_encoding($keyword, 'UTF-8', 'auto'); // 或指定编码转换 // $keyword = iconv('GBK', 'UTF-8//IGNORE', $keyword); // 防注入(PDO预处理) $stmt = $pdo->prepare("SELECT * FROM 文章表 WHERE 标题 LIKE ? OR 内容 LIKE ?"); $like = "%$keyword%"; $stmt->execute([$like, $like]); $results = $stmt->fetchAll(); // 输出JSON时指定编码 header('Content-Type: application/json; charset=utf-8'); echo json_encode($results, JSON_UNESCAPED_UNICODE); ```
URL编码错误是搜索转码中的常见问题。编码不匹配先统一四个编码点;关键词被截断是 URL 长度限制或特殊字符,用 POST 方式;搜索无结果是转码后关键词和数据库不匹配,echo 出转码后的关键词和 SQL 语句调试;ajax 搜索乱码检查响应头 charset。
搜索引擎蜘蛛的搜索页面不要收录。搜索结果页 URL 带参数,内容重复度高,百度收录后会判定为低质量页面。用 robots.txt Disallow 搜索页,或搜索页加 noindex。搜索功能给用户用,不给蜘蛛抓。

更新时间:2026-09-03 16:07:07
上一篇:网站被360提示有风险后上传目录木马的检测与清理方法_网站安全运维实战指南