我的知识记录

腾讯云虚拟主机搜索乱码_搜索乱码解决

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

PHP 搜索转码代码:$keyword = $_GET['keyword']; $keyword = mb_convert_encoding($keyword, 'UTF-8', 'auto'); auto 自动检测编码(UTF-8, GBK, BIG5)。或用 iconv('GBK', 'UTF-8//IGNORE', $keyword),//IGNORE 忽略无法转换的字符。转码后再拼 SQL 搜索。

参考(数据库连接字符集): ``` <?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 长度限制或特殊字符,用 POST 方式;搜索无结果是转码后关键词和数据库不匹配,echo 出转码后的关键词和 SQL 语句调试;ajax 搜索乱码检查响应头 charset。

搜索关键词安全:转码后还要防 SQL 注入,用 PDO 预处理或 mysqli 绑定参数,不要直接拼 SQL。关键词长度限制(如 50 字符),特殊字符过滤。搜索功能是注入高发区,编码统一和参数绑定都要做。

腾讯云虚拟主机搜索乱码_搜索乱码解决

标签:

更新时间:2026-08-27 10:48:08

上一篇:虚拟主机网站安全维护公司_防护实操

下一篇:IIS MyBB伪静态规则设置教程_IIS常用程序伪静态规则教程详解