西部数码虚拟主机POST搜索乱码方法_iconv与mb_convert
很多站长遇到 POST搜索乱码只改页面 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 // MySQLi $mysqli = new mysqli('localhost', '用户', '密码', '数据库'); $mysqli->set_charset('utf8mb4');
// PDO $pdo = new PDO('mysql:host=localhost;dbname=数据库;charset=utf8mb4', '用户', '密码');
// 旧版mysql(已废弃) mysql_query('SET NAMES utf8mb4');
-- 查看数据库字符集 SHOW VARIABLES LIKE 'character%'; -- 修改表字符集 ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ```
ajax搜索乱码是搜索转码中的常见问题。编码不匹配先统一四个编码点;关键词被截断是 URL 长度限制或特殊字符,用 POST 方式;搜索无结果是转码后关键词和数据库不匹配,echo 出转码后的关键词和 SQL 语句调试;ajax 搜索乱码检查响应头 charset。
搜索引擎蜘蛛的搜索页面不要收录。搜索结果页 URL 带参数,内容重复度高,百度收录后会判定为低质量页面。用 robots.txt Disallow 搜索页,或搜索页加 noindex。搜索功能给用户用,不给蜘蛛抓。

更新时间:2026-08-27 11:33:13