Перекодировать текст из ISO-8859-8 ↓
Восьмая часть стандарта ISO-8859, утверждённая в 1988 году, предназначена для иврита. На первый взгляд это простая кодировка: нижняя половина таблицы совпадает с ASCII, а в верхней части размещены 27 ивритских букв, включая пять конечных форм. Однако за этой простотой скрывается одна из самых запутанных историй в мире кодировок, связанная с направлением письма.
Иврит пишется справа налево, а латиница и цифры слева направо. Когда в одном тексте встречаются оба направления, компьютер должен знать, в каком порядке хранить символы и как их отображать. Существует два подхода. При логическом порядке буквы хранятся так, как их читает человек, а программа отображения сама переворачивает строку. При визуальном порядке буквы хранятся так, как они видны на экране, то есть ивритский текст записан в файле задом наперёд.
Кодировка ISO-8859-8 изначально использовалась с визуальным порядком. Это было проще для старых программ и терминалов, которые умели выводить текст только слева направо: они могли показать иврит без какой-либо дополнительной обработки. Многие ивритские сайты 1990-х годов были написаны именно так, и их HTML-код содержал слова, записанные в обратном порядке.
Со временем стало понятно, что визуальный порядок неудобен. Такой текст сложно редактировать, искать в нём слова и переносить строки, потому что при изменении ширины окна весь текст приходится переворачивать заново. Поэтому появился вариант ISO-8859-8-I, где буква I означает implicit, то есть "неявный" логический порядок. Набор символов в обоих вариантах одинаков, различается только способ хранения. Браузер, получивший неправильную метку, показывал текст задом наперёд.
Буквы иврита в ISO-8859-8 стоят на тех же местах, что и в Windows-1255. Но в Windows-1255 есть огласовки, знак шекеля и типографские символы, которых нет в стандарте ISO. Поэтому текст без огласовок можно свободно переносить между двумя кодировками, а текст с огласовками при чтении в ISO-8859-8 теряет все значки под и над буквами.
Если текст в ISO-8859-8 прочитать как западноевропейскую кодировку, ивритские буквы превращаются в латинские буквы с акцентами. Слово "שלום" становится "ùìåí", а при чтении в Windows-1251 превращается в "щмен". Отдельная ошибка возникает, когда визуальный текст показывают как логический: буквы при этом правильные, но слова читаются задом наперёд, и вместо "שלום" на экране оказывается "םולש".
Сегодня ивритские сайты работают в UTF-8 с логическим порядком, а визуальный иврит почти исчез. Однако его можно встретить в старых архивах, документации и некоторых базах данных. Если в тексте вместо ивритских букв стоят латинские буквы с акцентами, укажите ISO-8859-8 исходной кодировкой и преобразуйте текст в UTF-8. Если же слова идут задом наперёд, текст был записан в визуальном порядке, и его нужно дополнительно перевернуть.