生成一系列 多语言、多编码的测试文本文件

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

这些文件将覆盖:

  • ✅ 主要语言:中文、日文、韩文、阿拉伯文、俄文、西欧文、UTF-16 等
  • ✅ 常见编码:UTF-8、GBK、Big5、Shift_JIS、EUC-KR、ISO-8859-1、UTF-16LE/BE
  • ✅ 文件命名规范:<语言>_<编码>.txt

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

mkdir ~/encoding-test
cd ~/encoding-test

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

1. UTF-8(通用 Unicode)

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(简体中文)

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

3. Big5(繁体中文)

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

4. Shift_JIS(日文)

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

5. EUC-KR(韩文)

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

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

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

7. UTF-16LE(小端 Unicode)

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

8. UTF-16BE(大端 Unicode)

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

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

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

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

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

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

ls -l *.txt

你应该看到类似:

-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 命令识别类型

file *.txt

✅ 预期输出示例:

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 精确识别编码

pip3 install cchardet

创建 detect_all.py

#!/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['encoding']
    confidence = result['confidence']
    print(f"{filepath:20} → {encoding:10} (置信度: {confidence:.2f})")

运行:

python3 detect_all.py

✅ 预期输出(示例):

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 模型(可选)
  • 构建“多语言遥测解析引擎”
  • 自动化处理来自不同国家卫星的数据

此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注