Перекодировать текст из Windows-1254 ↓
Турецкий язык перешёл с арабского письма на латиницу в 1928 году, и его алфавит получил несколько особых букв. Самая известная из них, "ı", буква i без точки, обозначает отдельный гласный звук. Её заглавная пара пишется как обычная "I", а заглавная пара обычной "i" пишется с точкой: "İ". Именно эта особенность сделала турецкий язык одной из самых трудных задач для программистов, а Windows-1254, кодировка Microsoft для турецкого, стала главной таблицей этого языка на персональных компьютерах.
Windows-1254 построена на основе западноевропейской Windows-1252 и отличается от неё всего несколькими позициями. Microsoft заменила шесть редко используемых символов исландского алфавита турецкими буквами: "Ğ" и "ğ" с краткой, "İ" с точкой и "ı" без точки, "Ş" и "ş" с седильей. Остальные турецкие буквы, "ç", "ö" и "ü", в западноевропейской таблице уже были. Типографские кавычки, тире и знак евро тоже сохранились на тех же местах, что и в Windows-1252.
Благодаря этому сходству турецкий текст, прочитанный в Windows-1252, остаётся почти читаемым. Ошибка затрагивает только шесть букв, но они встречаются часто. Фраза "Işık, şeker, dağ", то есть "свет, сахар, гора", превращается в "Iþýk, þeker, dað": турецкие буквы становятся исландскими "þ", "ý" и "ð". Если же текст в UTF-8 прочитать как Windows-1254, каждая турецкая буква превращается в пару символов, и слово "Işık" выглядит как "Işık".
Буквы "ı" и "İ" принесли много неприятностей программистам по всему миру. Во многих языках программирования функции перевода текста в верхний или нижний регистр учитывают настройки языка. Если программа работает на компьютере с турецкими настройками, строчная "i" превращается не в "I", а в "İ", а заглавная "I" превращается в "ı". В результате сравнение слов без учёта регистра перестаёт работать, и команда "FILE" уже не совпадает с "file". Эту ошибку так часто встречали в программах, что она получила собственное название, "турецкая проблема".
Помимо Windows-1254, для турецкого языка существует международный стандарт ISO-8859-9, известный как Latin-5. Буквы в двух кодировках стоят на одних и тех же местах, а различия касаются только диапазона с 128 по 159, где Windows-1254 хранит типографские символы. Поэтому большинство турецких текстов выглядит одинаково в обеих таблицах, и ошибки при их смешении почти незаметны.
Турецкий язык в Windows-1254 подходит и для азербайджанского текста, хотя и не полностью: для буквы "ə" места в таблице не нашлось. Курдский язык в латинской записи также частично поддерживается этой кодировкой. Для полноценной работы с этими языками нужен Юникод.
Сегодня турецкие сайты в большинстве своём работают в UTF-8, но Windows-1254 встречается в старых документах, выгрузках из учётных программ, субтитрах и базах данных. Если в турецком тексте вместо букв "ş", "ğ" и "ı" стоят "þ", "ð" и "ý", укажите Windows-1254 исходной кодировкой и преобразуйте текст в UTF-8.