Простое решение проблемы с казахстанской кодировкой
Известно, что для того, чтобы работать в 1С с казахскими шрифтами, нужно изменить кодировку в ОС. Иногда это может быть не очень удобно.
- Описание
- Подробнее
Описание
Известно, что для того, чтобы работать в 1С с казахскими шрифтами, нужно изменить кодировку в ОС. Иногда это может быть не очень удобно. Посудите сами: изменяется порядок сортировки. Необходимо пересоздавать базы, все клиентские системы, работающие с этими базами, переводить на новую кодировку. А если на клиентской машине стоит кодировка отличная от стандартной 1251, то 1С:Предприятие просто не сможет подключится к базе данных со стандартной кодировкой. Т.е. изменяя системную кодировку, вы должны все рабочие базы 1С перевести на новую кодировку. Со старыми версиями SQL опять же возникают сложности хранения и обработки данных. А ведь нужно всё это лишь для одной цели: Отправлять текст с казахскими буквами в третью программу. Будь то хоть Банк-клиент, хоть Программа для отправки налоговой или статистической отчетности.
Я решил эту проблему простым способом. Предлагаю не менять системной кодировки. В базе данных можно хранить текст и без казахских букв. А в тот момент, когда мы выгружаем данные из 1С в другую программу, просто преобразовать специальные буквосчетания в казахские буквы.
Кодировка СТ РК 1048-2002 (Windows), отличается от стандартной 1251 лишь тем, что в нее добавлены 9 новых букв:
Буква | Подстрока | Десятичный код | HEX |
|0; | Э’ | 163 | A3 |
|1; | э’ | 188 | BC |
І | И’ | 178 | B2 |
і | и’ | 179 | B3 |
v6; | Н’ | 189 | BD |
v7; | н’ | 190 | BE |
u0; | Г’ | 170 | AA |
u1; | г’ | 186 | BA |
w8; | У’ | 175 | AF |
w9; | у’ | 191 | BF |
x0; | У’’ | 161 | A1 |
x1; | у’’ | 162 | A2 |
u8; | К’ | 141 | 8D |
u9; | к’ | 157 | 9D |
}6; | О’ | 165 | A5 |
}7; | о’ | 180 | B4 |
y0; | Х’ | 142 | 8E |
y1; | х’ | 158 | 9E |
Функция Каз(Текст) Экспорт
//* преобразовать казахские символы
Рез=СтрЗаменить(Текст,"Э'",Симв(163));
Рез=СтрЗаменить(Рез,"э'",Симв(188));
Рез=СтрЗаменить(Рез,"И'",Симв(178));
Рез=СтрЗаменить(Рез,"и'",Симв(179));
Рез=СтрЗаменить(Рез,"Н'",Симв(189));
Рез=СтрЗаменить(Рез,"н'",Симв(190));
Рез=СтрЗаменить(Рез,"Г'",Симв(170));
Рез=СтрЗаменить(Рез,"г'",Симв(186));
Рез=СтрЗаменить(Рез,"У''",Симв(161));
Рез=СтрЗаменить(Рез,"у''",Симв(162));
Рез=СтрЗаменить(Рез,"У'",Симв(175));
Рез=СтрЗаменить(Рез,"у'",Симв(191));
Рез=СтрЗаменить(Рез,"К'",Симв(141));
Рез=СтрЗаменить(Рез,"к'",Симв(157));
Рез=СтрЗаменить(Рез,"О'",Симв(165));
Рез=СтрЗаменить(Рез,"о'",Симв(180));
Рез=СтрЗаменить(Рез,"Х'",Симв(142));
Рез=СтрЗаменить(Рез,"х'",Симв(158));
Возврат Рез;
КонецФункции // ПреобразоватьКазСимвПример использования:
Каз("К'азак'стан Республикасы") = u8;азаu9;стан Республикасы

