多编码的测试文本文件

生成一系列 多语言、多编码的测试文本文件,文件扩展名为 .txt,用于测试 libmagic、chardet、cchardet 等工具对不同语种和编码的识别能力。

data-ad-format="fluid" data-ad-layout-key="-7k+ex-4a-9w+4a">

这些文件将覆盖:

  • ✅ 主要语言:中文、日文、韩文、阿拉伯文、俄文、西欧文、UTF-16 等

  • ✅ 常见编码:UTF-8、GBK、Big5、Shift_JIS、EUC-KR、ISO-8859-1、UTF-16LE/BE

  • ✅ 文件命名规范:<语言>_<编码>.txt

🛠️ 第一步:创建工作目录

1
2
mkdir ~/encoding-test
cd ~/encoding-test

🧪 第二步:生成各文种编码测试文件(.txt)

1. UTF-8(通用 Unicode)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
cat > zh_utf8.txt << 'EOF'
中文测试:卫星状态正常
时间:2025-04-05T12:00:00Z
消息:系统在线,载荷激活
EOF

cat > ja_utf8.txt << 'EOF'
日本語テスト:衛星ステータス正常
時刻:2025-04-05T12:00:00Z
メッセージ:システム起動中
EOF

cat > ko_utf8.txt << 'EOF'
한국어 테스트: 위성 상태 정상
시간: 2025-04-05T12:00:00Z
메시지: 시스템 온라인
EOF

cat > ar_utf8.txt << 'EOF'
اختبار عربي: الحالة طبيعية
الوقت: 2025-04-05T12:00:00Z
الرسالة: النظام يعمل
EOF

cat > ru_utf8.txt << 'EOF'
Тест на русском: Состояние нормальное
Время: 2025-04-05T12:00:00Z
Сообщение: Система работает
EOF

cat > en_utf8.txt << 'EOF'
English Test: Status Nominal
Time: 2025-04-05T12:00:00Z
Message: System Online
EOF

cat > fr_utf8.txt << 'EOF'
Test français : État normal
Heure : 2025-04-05T12:00:00Z
Message : Système en ligne
EOF

2. GBK(简体中文)

1
2
# 从 UTF-8 转为 GBK
iconv -f UTF-8 -t GBK zh_utf8.txt -o zh_gbk.txt

3. Big5(繁体中文)

1
iconv -f UTF-8 -t BIG5 zh_utf8.txt -o zh_big5.txt

4. Shift_JIS(日文)

1
iconv -f UTF-8 -t SHIFT_JIS ja_utf8.txt -o ja_shift_jis.txt

5. EUC-KR(韩文)

1
iconv -f UTF-8 -t EUC-KR ko_utf8.txt -o ko_euc_kr.txt

6. ISO-8859-1(西欧,如法语、德语)

1
iconv -f UTF-8 -t ISO-8859-1 fr_utf8.txt -o fr_latin1.txt

7. UTF-16LE(小端 Unicode)

1
echo "UTF-16LE Test: 多语言混合" | iconv -t UTF-16LE -o mixed_utf16le.txt

8. UTF-16BE(大端 Unicode)

1
echo "UTF-16BE Test: Satellite Message" | iconv -t UTF-16BE -o en_utf16be.txt

9. ASCII(纯英文,无扩展字符)

1
2
3
4
5
cat > en_ascii.txt << 'EOF'
Satellite Telemetry Log
Status: Nominal
Time: 2025-04-05T12:00:00Z
EOF

10. UTF-8 with BOM(带签名)

1
2
3
# 手动生成带 BOM 的 UTF-8
printf '\xEF\xBB\xBF' > zh_utf8_bom.txt
cat zh_utf8.txt >> zh_utf8_bom.txt

✅ 第三步:验证文件生成成功

1
ls -l *.txt

你应该看到类似:

1
2
3
4
5
6
7
8
-rw-r--r-- 1 user user  123 Apr  5 12:00 zh_utf8.txt
-rw-r--r-- 1 user user 123 Apr 5 12:00 zh_gbk.txt
-rw-r--r-- 1 user user 123 Apr 5 12:00 zh_big5.txt
-rw-r--r-- 1 user user 123 Apr 5 12:00 ja_shift_jis.txt
-rw-r--r-- 1 user user 123 Apr 5 12:00 ko_euc_kr.txt
-rw-r--r-- 1 user user 123 Apr 5 12:00 fr_latin1.txt
-rw-r--r-- 1 user user 123 Apr 5 12:00 en_utf16le.txt
...

🔍 第四步:使用 file 命令识别类型

1
file *.txt

✅ 预期输出示例:

1
2
3
4
5
6
7
8
9
10
en_ascii.txt:        ASCII text
en_utf8.txt: UTF-8 Unicode text
zh_gbk.txt: ISO-8859 text
zh_big5.txt: ISO-8859 text
ja_shift_jis.txt: ISO-8859 text
ko_euc_kr.txt: ISO-8859 text
fr_latin1.txt: ISO-8859 text
mixed_utf16le.txt: Little-endian UTF-16 Unicode text
en_utf16be.txt: Big-endian UTF-16 Unicode text
zh_utf8_bom.txt: UTF-8 Unicode (with BOM) text

⚠️ 注意:zh_gbk.txt 被识别为 ISO-8859 text —— 这正是我们之前说的:libmagic 无法区分 GBK 和 Latin-1

🧪 第五步:使用 cchardet 精确识别编码

1
pip3 install cchardet

创建 detect_all.py:

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python3
import cchardet
import glob

for filepath in sorted(glob.glob("*.txt")):
with open(filepath, 'rb') as f:
raw = f.read()
result = cchardet.detect(raw)
encoding = result&#91;'encoding']
confidence = result&#91;'confidence']
print(f"{filepath:20} → {encoding:10} (置信度: {confidence:.2f})")

运行:

1
python3 detect_all.py

✅ 预期输出(示例):

1
2
3
4
5
6
7
8
9
10
en_ascii.txt         → ascii       (置信度: 1.00)
en_utf16be.txt → UTF-16BE (置信度: 1.00)
en_utf8.txt → UTF-8 (置信度: 1.00)
fr_latin1.txt → ISO-8859-1 (置信度: 1.00)
ja_shift_jis.txt → SHIFT_JIS (置信度: 0.99)
ko_euc_kr.txt → EUC-KR (置信度: 0.99)
zh_big5.txt → Big5 (置信度: 0.99)
zh_gbk.txt → GB2312 (置信度: 0.99)
zh_utf8_bom.txt → UTF-8 (置信度: 1.00)
zh_utf8.txt → UTF-8 (置信度: 1.00)

✅ 成功识别 GBK 为 GB2312(GB2312 是 GBK 的子集,可接受)

✅ 总结:各文种编码测试文件清单

语言编码文件名中文(简体)UTF-8zh_utf8.txt中文(简体)GBKzh_gbk.txt中文(繁体)Big5zh_big5.txt日文Shift_JISja_shift_jis.txt韩文EUC-KRko_euc_kr.txt俄文UTF-8ru_utf8.txt阿拉伯文UTF-8ar_utf8.txt法文ISO-8859-1fr_latin1.txt英文ASCIIen_ascii.txt英文UTF-16LEen_utf16le.txt英文UTF-16BEen_utf16be.txt中文UTF-8 with BOMzh_utf8_bom.txt

🛰️ 在卫星通信中的应用

你可以用这些文件:

  • 测试地面站软件的编码自动识别能力

  • 训练 chardet 模型(可选)

  • 构建“多语言遥测解析引擎”

  • 自动化处理来自不同国家卫星的数据

data-ad-format="auto" data-full-width-responsive="true">