56 lines
1.8 KiB
Markdown
56 lines
1.8 KiB
Markdown
|
|
# SQL Fix: VR票务插件名乱码
|
|||
|
|
|
|||
|
|
## 症状
|
|||
|
|
侧边栏显示 `VR票务`(应为 `VR票务`)
|
|||
|
|
|
|||
|
|
## 根因
|
|||
|
|
`plugins` 表的 `name` 字段在插件安装时被存储为 Latin1 编码的 UTF-8 字节序列。
|
|||
|
|
|
|||
|
|
`票务` 的 UTF-8 字节 `E7 A5 8A E5 8A B1` 被当作 Latin1 解读:
|
|||
|
|
- `E7` → â(â)
|
|||
|
|
- `A5` → ¥
|
|||
|
|
- `8A` → Š
|
|||
|
|
- `E5` → å
|
|||
|
|
- `8B` → ‹
|
|||
|
|
- `A1` → ¡
|
|||
|
|
|
|||
|
|
结果:`VR票务` → `VR票务`
|
|||
|
|
|
|||
|
|
## 修复 SQL(在 phpMyAdmin 或 MySQL CLI 中执行)
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 1. 确认当前值(应该是乱码 VR票务)
|
|||
|
|
SELECT id, plugins, name FROM sx_plugins WHERE plugins = 'vr_ticket';
|
|||
|
|
|
|||
|
|
-- 2. 直接更新为正确的中文名称
|
|||
|
|
UPDATE sx_plugins
|
|||
|
|
SET name = 'VR票务'
|
|||
|
|
WHERE plugins = 'vr_ticket';
|
|||
|
|
|
|||
|
|
-- 3. 确认修复结果
|
|||
|
|
SELECT id, plugins, name FROM sx_plugins WHERE plugins = 'vr_ticket';
|
|||
|
|
-- 应该显示:VR票务
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**注意**:
|
|||
|
|
- `sx_plugins` 是默认表前缀。如果您的 ShopXO 使用其他前缀,请相应修改(例如 `shopxo_plugins`、`plugins` 等)。
|
|||
|
|
- 可以在 phpMyAdmin → ShopXO 数据库 → `sx_plugins` 表中直接编辑 `name` 字段。
|
|||
|
|
- 如果乱码字符串不完全匹配 `VR票务`,请在 phpMyAdmin 中查看原始数据并根据实际情况调整 WHERE 条件。
|
|||
|
|
|
|||
|
|
## 附加:检查其他可能的乱码字段
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
-- 检查 vrt_power 表的 name 字段(如果有)
|
|||
|
|
SELECT id, name FROM sx_vrt_power WHERE name LIKE '%ç¥%' OR name LIKE '%票务%';
|
|||
|
|
|
|||
|
|
-- 如果有乱码,一并修复
|
|||
|
|
UPDATE sx_vrt_power SET name = REPLACE(name, 'VR票务', 'VR票务') WHERE name = 'VR票务';
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 预防措施
|
|||
|
|
|
|||
|
|
未来安装插件时,确保:
|
|||
|
|
1. phpMyAdmin/MySQL 连接字符集是 `utf8mb4`
|
|||
|
|
2. `plugin.json` 文件本身是 UTF-8 编码(无 BOM)
|
|||
|
|
3. ShopXO 数据库配置的 charset 是 `utf8mb4`
|