# 文件编码规范（UTF-8，规避中文乱码）

> 本项目 `pom.xml` 已配置 `project.build.sourceEncoding=UTF-8`；`.vscode/settings.json` 已设 `files.encoding: utf8`。
> Windows 环境下若编码不一致，中文注释/字符串会出现 `?????` 或 `???` 乱码。

## 强制要求

1. **所有含中文的文件一律 UTF-8 编码**（Java、XML、SQL、Vue、Markdown、规则文件等）。
2. **写入后必须回读校验**：若中文变成乱码，立即用 UTF-8 重新写入，不得留乱码文件。
3. **禁止**在含中文路径/内容的场景下依赖系统默认编码（Windows 常为 GBK）。

## 按文件类型的编码约定

| 类型 | 编码 | 说明 |
|------|------|------|
| `.java` | UTF-8（建议带 BOM） | 编译：`javac -encoding UTF-8` |
| `.xml` / `.vue` / `.md` / `.mdc` | UTF-8 无 BOM | 声明 `encoding="UTF-8"` |
| `.sql` | UTF-8 无 BOM | 执行时用 `StandardCharsets.UTF_8` 读取 |
| Shell 执行 SQL | UTF-8 读取 + 跳过 BOM | 首行 `\uFEFF` 需剥离 |

## 乱码修复方式（Windows）

```powershell
# Java（IDE 友好，带 BOM）
$utf8Bom = New-Object System.Text.UTF8Encoding $true
[System.IO.File]::WriteAllText($path, $content, $utf8Bom)

# SQL / XML / 配置（无 BOM）
$utf8 = New-Object System.Text.UTF8Encoding $false
[System.IO.File]::WriteAllText($path, $content, $utf8)
```

## 常见乱码场景与规避

- 工具写入后 IDE 显示 `?????????` → 用 PowerShell UTF-8 重写并回读验证。
- 达梦 SQL 注释变 `???` → 执行脚本必须用 UTF-8 读取并处理 BOM。
- 含中文的新文件禁止提交乱码版本；无法保证编码时先用英文占位并在同轮修复。
