导出SQL文件时未指定--default-character-set=utf8mb4会导致中文乱码,因mysqldump默认使用latin1或utf8mb3;导入时宝塔界面字符集选错(如留空或选UTF8)亦致乱码,须明确选utf8mb4并配合--skip-set-charset导出及--default-character-set=utf8mb4导入。
导出 SQL 文件时没指定
宝塔默认用
导出,但不加字符集参数时,它会按 MySQL 服务端的
或连接默认值来处理——这经常是
或旧版
(即
),导致中文被错误
编码
成乱码字节后写入文件。
实操建议:
导出前先查源库实际字符集:
和
,确认
是
用命令行导出,显式指定编码:
务必加
:否则
会在 SQL 文件开头硬写
类语句,覆盖后续导入时的编码设置
导入时未在 phpMyAdmin 或宝塔「数据库管理」中选择正确编码
宝塔后台的数据库导入界面有个下拉框叫「字符集」,很多人直接留空或选了
(其实是
),而目标库是
。这时 phpMyAdmin 会以错误编码解析 SQL 流,把原本正确的
字节当
重解,结果就是问号、 Mojibake 或双问号(如 )。
实操建议:
导入前,在宝塔数据库管理页点「导入」,下拉菜单必须选
(不是
,也不是留空)
如果已导入出错,别反复导入覆盖——数据已损坏。应删库重建,再按正确流程重导重入
用命令行导入更可控:
目标数据库/表的字符集仍是
或
即使 SQL 文件内容正确,如果新库或表的默认字符集没设对,MySQL 插入时仍会按旧编码存储。典型表现是:字段显示正常,但搜索中文查不到;或者 phpMyAdmin 看着是中文,网页输出却是乱码。
React Native For Android 源码编译 中文WORD版
本文档主要讲述的是React Native For Android 源码编译;希望对大家会有帮助;感兴趣的朋友可以过来看看
下载
实操建议:
建库时就指定:
已有库可修改:
已有表也得改:
检查是否生效:
和
,重点看
和
PHP 连接层没声明
,导致读取时二次转码
网站能打开但中文显示异常?可能是 PHP 的 MySQLi 或 PDO 连接没设对编码。比如用
,这个
在新版 MySQL 中等价于
,无法正确读取
存储的四字节 emoji 或某些生僻汉字。
实操建议:
PDO 连接字符串加
:
MySQLi 连接后立即执行:
检查 PHP 配置中的
(已废弃)或
,设为
关键点其实就一个:从导出、建库、导入到 PHP 连接,
必须贯穿始终。漏掉任意一环,中文就可能在某个环节被截断、误判或重编码。尤其注意宝塔界面里那个不起眼的「字符集」下拉框——它比你想象中更有决定性。
--default-character-set=utf8mb4mysqldumpcharacter_set_databaselatin1utf8utf8mb3SHOW CREATE DATABASE `your_db`;SHOW CREATE TABLE `your_table`;CHARACTER SETutf8mb4mysqldump -u root -p --default-character-set=utf8mb4 --skip-set-charset your_db > backup.sql--skip-set-charsetmysqldumpSET NAMES latin1UTF8utf8mb3utf8mb4utf8mb4latin1utf8mb4UTF8mysql -u root -p --default-character-set=utf8mb4 your_new_db latin1utf8CREATE DATABASE `new_db` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;ALTER DATABASE `new_db` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;ALTER TABLE `your_table` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;SHOW VARIABLES LIKE 'character_set%';SHOW VARIABLES LIKE 'collation%';character_set_databasecharacter_set_serverutf8mb4mysqli_set_charset($conn, 'utf8')utf8utf8mb3utf8mb4;charset=utf8mb4$pdo = new PDO("mysql:host=localhost;dbname=your_db;charset=utf8mb4", $user, $pass);mysqli_set_charset($conn, 'utf8mb4');mysql.default_charsetmysqli.default_charsetutf8mb4utf8mb4