检测 UTF-8 编码文本文件中的损坏字符
Detecting corrupt characters in UTF-8 encoded text file
我有一个用错误的字符编码编辑的文本文件,因此当我使用 UTF-8 打开它时,某些字符串中有一些乱码和损坏的字符。哪种脚本语言最有效地检测这些损坏的字符? Perl 不是一个选项。我基本上是想找到一种方法来使用脚本扫描文本文件并输出行号,并可能在发现损坏字符的位置进行偏移。我该怎么做?我正在考虑使用 AWk,但我不知道在搜索损坏的字符时使用什么正则表达式。如果能给我指明正确的方向,那就太好了。
更全面的输入:
我希望脚本告诉我包含损坏字符的行号,这将是上例中的第五行。此外,文本文件中有不同的语言。我有英语
中国人,
法语,
西班牙语,
俄语,
葡萄牙语,
土耳其,
French_Euro,
德语,
荷兰语,
佛兰德语,
韩国人,
Portuguese_Moz。我还有一些特殊字符,比如 # 和 !和 ***
我使用这个 if 语句得到上面的输出:
if( ~ /[^\x00-\x7F]/){
print NR ":" , [=10=] > "output.txt";
count++;
}
这会找到 ASCII 范围之外的所有字符:
$ awk '/[^\x00-\x7F]/{ print NR ":", [=10=] }' file
1: Interruptor EC não está em DESLOCAR
4: 辅助驾驶室门关é—
5: Porte cab. aux. fermée
7: Дверь аппаратной камеры закрыта
13: é«˜åŽ‹ä¿æŠ¤æ‰‹æŸ„å‘下
14: Barrière descendue
16: Огранич. Планка ВВК опущ.
19: Barra de separação descida
22: DP未å¯åЍ
23: Puiss. rép. non activée
25: !!! ВнешнÑÑ Ð¼Ð¾Ñ‰Ð½Ð¾Ñть не включена
26: Potência Dist Não Ativada
28: Potência dist não activada
31: 机车未移动
33: Motor no se está moviendo
34: Локомотив неподвижен
35: Auto Não se Movendo
37: A não se move
40: 机车状况å…è®¸è‡ªåŠ¨åœæœº
41: Conditions auto\npermettent arrêt auto
43: УÑтановки локомотива\nПредуÑматривают Ð °Ð²Ñ‚оматичеÑкую оÑтановку
44: Condições da moto\nPermitem Auto Parada
这样够好吗?如果不是,请编辑您的问题以显示更全面的示例输入,包括上述内容不起作用的情况。
我有一个用错误的字符编码编辑的文本文件,因此当我使用 UTF-8 打开它时,某些字符串中有一些乱码和损坏的字符。哪种脚本语言最有效地检测这些损坏的字符? Perl 不是一个选项。我基本上是想找到一种方法来使用脚本扫描文本文件并输出行号,并可能在发现损坏字符的位置进行偏移。我该怎么做?我正在考虑使用 AWk,但我不知道在搜索损坏的字符时使用什么正则表达式。如果能给我指明正确的方向,那就太好了。
更全面的输入:
我希望脚本告诉我包含损坏字符的行号,这将是上例中的第五行。此外,文本文件中有不同的语言。我有英语 中国人, 法语, 西班牙语, 俄语, 葡萄牙语, 土耳其, French_Euro, 德语, 荷兰语, 佛兰德语, 韩国人, Portuguese_Moz。我还有一些特殊字符,比如 # 和 !和 ***
我使用这个 if 语句得到上面的输出:
if( ~ /[^\x00-\x7F]/){
print NR ":" , [=10=] > "output.txt";
count++;
}
这会找到 ASCII 范围之外的所有字符:
$ awk '/[^\x00-\x7F]/{ print NR ":", [=10=] }' file
1: Interruptor EC não está em DESLOCAR
4: 辅助驾驶室门关é—
5: Porte cab. aux. fermée
7: Дверь аппаратной камеры закрыта
13: é«˜åŽ‹ä¿æŠ¤æ‰‹æŸ„å‘下
14: Barrière descendue
16: Огранич. Планка ВВК опущ.
19: Barra de separação descida
22: DP未å¯åЍ
23: Puiss. rép. non activée
25: !!! ВнешнÑÑ Ð¼Ð¾Ñ‰Ð½Ð¾Ñть не включена
26: Potência Dist Não Ativada
28: Potência dist não activada
31: 机车未移动
33: Motor no se está moviendo
34: Локомотив неподвижен
35: Auto Não se Movendo
37: A não se move
40: 机车状况å…è®¸è‡ªåŠ¨åœæœº
41: Conditions auto\npermettent arrêt auto
43: УÑтановки локомотива\nПредуÑматривают Ð °Ð²Ñ‚оматичеÑкую оÑтановку
44: Condições da moto\nPermitem Auto Parada
这样够好吗?如果不是,请编辑您的问题以显示更全面的示例输入,包括上述内容不起作用的情况。