Во-первых, если персонаж действительно «особенный» или нет, зависит от того, что вы называете «специальным персонажем».В качестве идентификатора в Unix и OS X вы можете использовать, например, команды od , file и hexdump для простого просмотра файлов:
... $ hexdump -C example.txt
00000530 6f 77 73 20 61 63 74 69 6f 6e 2e 0a 0a 0a 0a |ows action.....|
Теперь, если вы знаете, что кодировка вашего файла - UTF-8, это означает, что каждый байт, чей старший бит установлен в ноль, соответствует ровно одному символу (в приведенном выше примере последний байт равен «0a», что означает«0a» соответствует одному «символу»).
Файл в UTF-8 также означает, что каждый байт, старший бит которого установлен в 1, является частью многобайтового символа.Например, в следующей последовательности байтов:
75 20 5b e2 80 a6 5d 20 61 75 74 6f 72 69 73 61
единственными тремя байтами, для которых установлен их старший бит, является «e2 80 a6» (для всех значений от 0x80 до 0xFF установлен самый левый / старший бит)и они являются частью одного и того же символа (вы не можете иметь не-ASCII-символ в UTF-8, состоящий только из одного байта, чей старший бит установлен, следовательно, вы знаете, что эти три байта являются частью одного и того же символа ...тот факт, что каждый байт UTF-8, для которого установлен самый левый / старший бит, является ИМХО действительно прекрасной особенностью UTF-8).
Теперь вы Google на «e2 80 a6» и видите, что это символ Unicode с именем«горизонтальный многоточие» (чья кодовая точка в UTF-8 представлена шестнадцатеричным e280a6).
Таким образом, в основном вам нужно сделать две вещи:
найти, какие байтысоставляют последний «специальный» символ (это один байт или несколько байтов?)
найти, какому «специальному символу» этот / эти байт (ы) соответствует