Существует ли программное обеспечение, которое можно использовать для проверки всех видимых и невидимых символов в текстовом файле (таких как BOM, указатель направления, перевод строки и т. д.)?
Полезной функцией также является отображение названий символов в кодировке Unicode.
Я хочу использовать такое приложение для анализа текстовых файлов перед их обработкой с помощью языка программирования.
решение1
Хороший шестнадцатеричный редактор, вероятно, будет вашим лучшим выбором. Попробуйте FrHed (http://frhed.sourceforge.net/en/) если вы на windows или благословляете (http://home.gna.org/bless/) на Linux.
решение2
TheBabelPadРедактор отличный: когда вы помещаете курсор после символа, он показывает вам номер Unicode и имя Unicode. И у него есть встроенный просмотрщик информации Unicode, который показывает множество свойств Unicode для символов. К сожалению, он обрабатывает BOM вместо того, чтобы показывать его, и он также интерпретирует символы переноса строки вместо того, чтобы показывать их. Возможно, есть способ изменить это; его документация... ну, не самая лучшая ее часть. Но он будет показывать невидимые элементы управления, такие как LRM, и может различать пробел и неразрывный пробел и т. д.
решение3
Может быть, это полезно, хотя ответ больше подходит для Stack Overflow. Я создал небольшой парсер на Perl, который делает то, что вам нужно. Жаль, что здесь нет подсветки.
#!/usr/bin/perl
use strict; use warnings;
use feature qw(say);
use Data::Dumper;
use Unicode::String;
use utf8;
my $line_no = 1;
# Read stuff from the __DATA__ section as if it were a file,
# one line at a time
while (my $line = <DATA>) {
# Create a Unicode::String object
my $us = Unicode::String->new($line);
# Iterate over the length of the string
for (my $i = 0; $i < $us->length; $i++) {
# Get the next char
my $char = $us->substr($i, 1);
# Output a description, one line per character
printf "Line %i, column %i, 0x%x '%s' (%s)\n",
$line_no, # line number
$i, # colum number
$char->ord, # the ordinal of the char, in hex
$char->as_string, # the stringified char (as in the input)
$char->name; # the glyph's name
}
# increment line number
$line_no++;
}
# Below is the DATA section, which can be used as a file handle
__DATA__
This is some very strange unicode stuff right here:
٩(-̮̮̃-̃)۶ ٩(●̮̮̃•̃)۶ ٩(͡๏̯͡๏)۶ ٩(-̮̮̃•̃).
Давайте посмотрим, что это делает:
- Считывание из дескриптора файла (
DATA
раздел может использоваться таким образом) построчно. - Создайте объект, представляющий строку Unicode из строки.
- Перебрать символы в этой строке
- Вывод имени, номера и информации о каждом символе
Это действительно очень просто. Может быть, вы сможете адаптировать это к php, хотя я не знаю, есть ли удобная библиотека для имен.
Надеюсь, поможет.
Я поднял смайлики здесь:Из каких символов Unicode состоят смайлики типа ٩(•̮̮̃•̃)۶?
решение4
Я бы рекомендовалБлокнот++. Если вы перейдете в Вид->Показать символ и выберете "Показать все символы", он покажет все невидимые символы с их именем. Например, он покажет новые строки как LF, CRLF или CR в зависимости от используемого вами формата новой строки.