我的知识记录

mb_convert_encoding搜索_urlencode与数据库字符集

很多站长遇到 mb_convert_encoding搜索只改页面 meta,搜索还是乱码,因为数据库连接字符集没设。PHP 连 MySQL 后要执行 SET NAMES utf8mb4(或 gbk),否则 PHP 发送给 MySQL 的关键词编码和数据库不一致,搜索无结果或乱码。

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

搜索优化:中文搜索用 LIKE '%关键词%' 会全表扫描,数据量大了慢。可以用 MySQL 全文索引(FULLTEXT)、Sphinx、Elasticsearch 等搜索引擎。编码统一是基础,搜索引擎也要求 UTF-8。

搜索引擎蜘蛛的搜索页面不要收录。搜索结果页 URL 带参数,内容重复度高,百度收录后会判定为低质量页面。用 robots.txt Disallow 搜索页,或搜索页加 noindex。搜索功能给用户用,不给蜘蛛抓。

mb_convert_encoding搜索_urlencode与数据库字符集

标签:

更新时间:2026-08-27 13:03:37

上一篇:dedecms迁移到百度云服务器操作指南_BCC部署与数据导入全流程

下一篇:Nginx limit_req限制WordPress xmlrpc请求频率防pingback攻击_网站安全运维实战指南