Сохранение турецкого текста в базу с кодировкой windows-1251
Столкнулся я как то с проблемой: необходимо было разместить материал на сайте, а база у него как выяснилась в cp-1251, и особые турецкие символы с хвостиками и точками сохранялись в базу как вопросительные знаки.
Переводить всю базу в юникод, не было желания, т.к. нужно было залить всего несколько текстов.
Генерацию HTML кода я делаю в визуальном редакторе CKeditor, и он некоторые символы преобразовывал в коды, а некоторые нет.
Я решил что нужно преобразовать все особые турецкие символы в спецкоды, т.к. почти весь турецкий алфавит состоит из совместимых с кодировкой латинских символов.
Нашел специальный сервис Кодировщик символов в HTML коды, но режимы которые он предлагал мне не подходили:
режими «Кодирование символов, для которых есть мнемонические имена в html» - преобразовывал не все символы
а режим «Кодирование всех символов Исключая диапазон latin1» - преобразовывал также и русский текст.
Тогда мне пришла идея о ручной замене всех особых символов. Для начала я выяснил весь список символов в турецком алфавите, затем прогнал его через «Кодирование всех символов Исключая диапазон latin1» - и тем самым выяснил какие символы являются уникальными для турецкого алфавита:
уникальные символы | их коды |
их мнемонические имена (так преобразует ckeditor, красные символы которые не преобразуются) |
Ç ç Ğ ğ ı İ Ö ö Ş ş Ü ü |
Ç ç Ğ ğ ı İ Ö ö Ş ş Ü ü |
Ç ç Ğ ğ ı İ Ö ö Ş ş Ü ü |
Я пошел по такому алгоритму:
- Генерирую html в ckeditor
- допиливаю код в соответствии со своими требованиями
- заменяю символы из таблицы на коды
Для замены я записал макрос в Notepad++, но я думаю, такой же макрос можно записать в любом редакторе поддерживающем макросы. Или еще лучше, написать скрипт по замене.
Итак записываем макрос замены, с учетом регистра, каждого символа на их коды
Макросы Notepad++ сохраняет в файле shortcuts.xml, который находится в каталоге:
"C:Documents and SettingsAdministratorApplication DataNotepad++". Где "Administrator" — имя текущего пользователя Windows.
Теперь я спокойно могу сохранить текст в базу не боясь потерять нужные буквы.
Получившийся макрос выкладываю в файле - с единственным макросом shortcuts.xml
Если увас уже есть записанные макросы, то что бы их не потерять, вместо замены файла, нужно открыть его в редакторе и в разделе <Macros>... </Macros> вставить текст из файла.