Как невидимый знак меняет видимый порядок букв
Английский текст хранится в компьютере в обычном логическом порядке: сначала первая буква, затем следующая. Но при отображении программа должна решить, в каком направлении расположить строки. Для этого она учитывает письмо текста: английское обычно идёт слева направо, а арабское и иврит — справа налево. В смешанном абзаце эти правила работают одновременно.
В Unicode — стандарте, который задаёт представление символов в цифровом тексте, — есть управляющие знаки направления. Они не выглядят как буквы и обычно не занимают заметного места, но могут менять правила отображения следующих символов. Например, знак U+202E задаёт принудительное направление справа налево до другого управляющего знака, который отменяет это действие. В результате английские буквы могут оказаться на экране в порядке, не совпадающем с порядком в сохранённой строке.
Почему текст не меняется, а чтение — да
Такие знаки не переставляют символы в файле: они влияют на то, как программа раскладывает их по строке. Поэтому один и тот же фрагмент может выглядеть по-разному в редакторе, браузере или другом приложении — особенно если программа по-разному поддерживает обработку направления письма.
Это важно не только для языков с письмом справа налево. В смешанном тексте цифры, скобки, знаки препинания и латинские слова нужно расположить так, чтобы их можно было прочесть в привычном порядке. Управляющие знаки помогают задавать такое расположение, но при неожиданных или скрытых настройках могут сделать фрагмент обманчивым на вид. Например, имя файла может отображаться так, что его расширение кажется стоящим в другом месте, хотя в данных оно не менялось.
Поэтому при проверке подозрительного текста полезно смотреть не только на то, что видно на экране: невидимый знак способен изменить видимый порядок, не изменив саму последовательность символов.






