Перекодировать текст из ISO-8859-16 ↓
Бывает, что целая кодировка появляется из-за одной маленькой закорючки. Именно так случилось с ISO-8859-16, последней частью большого семейства восьмибитных стандартов ISO. Её главной задачей было исправить ошибку, которая много лет портила румынские тексты: в предыдущих кодировках под буквами "s" и "t" вместо запятой стояла седилья. Новая таблица, утверждённая в 2001 году, получила второе имя Latin-10 и предназначалась для языков Юго-Восточной Европы.
Чтобы понять суть проблемы, нужно знать особенность румынской орфографии. В румынском языке есть буквы "ș" и "ț", у которых снизу стоит маленькая запятая. Внешне похожие турецкие буквы "ş" и "ç" имеют под собой седилью, то есть крючок другой формы. В кодировках ISO-8859-2 и Windows-1250 составители сочли эти знаки одинаковыми и поместили в таблицу только варианты с седильей. Румыны десятилетиями печатали тексты формально неправильными буквами, а шрифты нередко рисовали седилью вместо запятой.
ISO-8859-16 впервые дала румынскому языку правильные символы. В таблицу вошли буквы "Ș", "ș", "Ț" и "ț" с запятой, а также другие румынские буквы. Кроме того, кодировка охватывала польский, хорватский, словенский, венгерский, албанский, французский, немецкий, итальянский и ирландский языки. В неё добавили знак евро и типографские кавычки, которых не хватало в более ранних частях стандарта. Получилась довольно универсальная таблица для Юго-Восточной и Центральной Европы.
К сожалению, кодировка появилась слишком поздно. К 2001 году в мире уже уверенно распространялся Юникод, в котором румынские буквы с запятой получили собственные номера ещё в 1999 году. Операционные системы, браузеры и сайты переходили на UTF-8, и необходимость в новой однобайтовой таблице почти отпала. ISO-8859-16 поддерживают большинство библиотек для работы с текстом, но реальных документов в ней сравнительно мало.
Ошибки при неправильном прочтении такого текста выглядят по-разному в зависимости от того, с какой кодировкой его перепутали. Фраза "Știință și țară", записанная в ISO-8859-16 и открытая как Windows-1252, превращается в "ªtiinþã ºi þarã": на месте румынских букв появляются порядковые индикаторы и исландская буква "þ". Если же текст прочитать как ISO-8859-2, получится "Ştiinţă şi ţară". На первый взгляд всё правильно, но вместо запятых снова стоят седильи, то есть тот самый старый дефект, ради исправления которого кодировка создавалась.
История румынских букв не закончилась и с приходом Юникода. Долгое время многие шрифты и клавиатурные раскладки по-прежнему использовали варианты с седильей, и в интернете одновременно существуют тексты с обоими вариантами. Это создаёт проблемы для поиска и сортировки: слова, которые выглядят одинаково, состоят из разных символов. Поисковые системы и словари румынского языка вынуждены учитывать обе формы написания.
Для пользователя из этого следует простой практический вывод. Если в румынском тексте вместо букв с запятой стоят символы "ª", "º" и "þ", значит, текст в ISO-8859-16 или Windows-1250 был открыт как западноевропейская кодировка. Если же буквы выглядят правильно, но поиск их не находит, возможно, в тексте используются варианты с седильей, и их стоит заменить правильными символами.
ISO-8859-16 стала последней кодировкой своего семейства и своеобразным памятником эпохе национальных таблиц. Она решила реальную проблему, но опоздала к моменту, когда эта проблема была важна. Если вам попался документ в Latin-10, просто укажите её исходной кодировкой и преобразуйте текст в UTF-8, где все румынские буквы с запятой поддерживаются без каких-либо оговорок.