生成一系列 多语言、多编码的测试文本文件,文件扩展名为 .txt,用于测试 libmagic、chardet、cchardet 等工具对不同语种和编码的识别能力。
这些文件将覆盖:
🛠️ 第一步:创建工作目录
1 2 mkdir ~/encoding-testcd ~/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 -05 T12:00:00Z 消息:系统在线,载荷激活 EOF cat > ja_utf8.txt << 'EOF' 日本語テスト:衛星ステータス正常 時刻:2025-04 -05 T12:00:00Z メッセージ:システム起動中 EOF cat > ko_utf8.txt << 'EOF' 한국어 테스트: 위성 상태 정상 시간: 2025-04 -05 T12:00:00Z 메시지: 시스템 온라인 EOF cat > ar_utf8.txt << 'EOF' اختبار عربي: الحالة طبيعية الوقت: 2025-04 -05 T12:00:00Z الرسالة: النظام يعمل EOF cat > ru_utf8.txt << 'EOF' Тест на русском: Состояние нормальное Время: 2025-04 -05 T12:00:00Z Сообщение: Система работает EOF cat > en_utf8.txt << 'EOF' English Test: Status NominalTime: 2025-04 -05 T12:00:00Z Message: System Online EOF cat > fr_utf8.txt << 'EOF'Test français : État normal Heure : 2025-04 -05 T12:00:00Z Message : Système en ligne EOF
2. GBK(简体中文) 1 2 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-16 LE -o mixed_utf16le.txt
8. UTF-16BE(大端 Unicode) 1 echo "UTF-16BE Test: Satellite Message" | iconv -t UTF-16 BE -o en_utf16be.txt
9. ASCII(纯英文,无扩展字符) 1 2 3 4 5 cat > en_ascii.txt << 'EOF' Satellite Telemetry Log Status: NominalTime: 2025-04 -05 T12:00:00Z EOF
10. UTF-8 with BOM(带签名) 1 2 3 printf '\xEF\xBB\xBF' > zh_utf8_bom.txtcat zh_utf8.txt >> zh_utf8_bom.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 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 精确识别编码
创建 detect_all.py:
1 2 3 4 5 6 7 8 9 10 11 import cchardetimport globfor filepath in sorted (glob.glob("*.txt" )): with open (filepath, 'rb' ) as f: raw = f.read() result = cchardet.detect(raw) encoding = result& confidence = result& print (f"{filepath:20 } → {encoding:10 } (置信度: {confidence:.2 f} )" )
运行:
✅ 预期输出(示例): 1 2 3 4 5 6 7 8 9 10 en_ascii .txt → ascii (置信度: 1 .00 )en_utf16be .txt → UTF-16 BE (置信度: 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 模型(可选)
构建“多语言遥测解析引擎”
自动化处理来自不同国家卫星的数据
相关阅读