我的知识记录

GBK搜索UTF-8_SET NAMES与PDO charset

GBK搜索UTF-8 时 GET 方式的搜索关键词在 URL 里,浏览器会自动 urlencode,但不同浏览器编码不同(IE 用 GBK,Chrome 用 UTF-8),需要在 PHP 里检测编码再转码。POST 方式编码和页面一致,通常没问题。

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

转码完用面板文件管理器查看确认。搜索中文关键词看结果是否正确,URL 里的关键词是否正常编码,F12 看请求参数编码。搜索结果页面标题和摘要不乱码。不同浏览器(Chrome、Firefox、IE)测试,IE 对 GBK 编码处理不同,重点测。

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

GBK搜索UTF-8_SET NAMES与PDO charset

标签:

更新时间:2026-08-30 16:59:50

上一篇:Apache屏蔽域名规则不生效排查_Apache IIS屏蔽域名访问教程详解

下一篇:Caddy服务器限流配置修复|企业官网推广引流中429 Too Many Requests请求过多错误完整排查