我的知识记录

阿里云虚拟主机搜索乱码_UTF-8搜索GBK解决

阿里云虚拟主机网站搜索关键字乱码,是页面编码、PHP 文件编码、数据库字符集三者不一致导致的。统一用 UTF-8 是最省事的方案,GBK 站点搜索 UTF-8 关键词或反过来都会乱码。搜索前用 iconv 或 mb_convert_encoding 转码,保证关键词和数据库编码一致。

数据库连接字符集:MySQLi 用 $mysqli->set_charset('utf8mb4'),PDO 用 dsn 加 charset=utf8mb4,旧版 mysql 用 mysql_query('SET NAMES utf8mb4')。连接字符集决定 PHP 和 MySQL 之间传输的编码,必须和数据库表字符集一致。

参考(数据库连接字符集): ``` <?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。

GBK 转 UTF-8 是长期趋势。GBK 一个中文 2 字节,UTF-8 一个中文 3 字节,数据库占用会增加 50%,但 UTF-8 支持更多字符(emoji、生僻字),和国际标准接轨。转码时用 iconv 批量转文件,数据库用 ALTER TABLE CONVERT TO CHARACTER SET utf8mb4。

阿里云虚拟主机搜索乱码_UTF-8搜索GBK解决

标签:

更新时间:2026-08-26 23:48:25

上一篇:虚拟主机网站防XSS跨站攻击的安全配置方案_网站安全运维实战指南

下一篇:SSL HTTPS_网站证书错误怎么解决配置