Имя: Пароль:
1C
 
Возможно ли кодирование символов русского алфавита с помощью Code128?
0 Виталий
 
22.12.10
17:36
Добрый день!
Возможно ли кодирование символов русского алфавита с помощью Code128?
1 PVV65
 
22.12.10
17:43
2 Serginio1
 
22.12.10
17:53
Можно. Например в том же Code128 испоьльзутся управляющие символы для аналога кодовых страниц.
Ты можешь переводить Уникоде в ASCII
function СимволАнсиТуУникоде(Буква)
   
         КодСимв=КодСимвола(Буква)+128;
        Если (КодСимв>=192 и КодСимв<=255) Тогда
            Возврат Символ(КодСимв+1040-192)
        ИначеЕсли КодСимв=168 Тогда
            возврат "Ё"
        ИначеЕсли КодСимв=184 Тогда
            возврат "ё"
        ИначеЕсли КодСимв=185 Тогда
            возврат "№"
        Иначе
            сообщить(КодСимв)
        КонецЕсли;

   
        Возврат ""
КонецФункции

И кодировать
3 Serginio1
 
22.12.10
17:53
Функция ПреобразоватьСтрокуДляКоде128(стр) экспорт
   ЭтоЛатиница=1;
   резулт="";
   Для сч=1 по СтрДлина(стр) Цикл
       Буква=Сред(стр,сч,1);
       Если КодСимвола(Буква)>127 Тогда
           Если ЭтоЛатиница=1 Тогда
              Резулт=Резулт+Символ(1);
              ЭтоЛатиница=0;
           КонецЕсли;
           Резулт=Резулт+СимволИзУникодаВАнси(Буква)//Символ(КодСимв(Буква)-128)

       иначе  
           Если ЭтоЛатиница=0 Тогда
              Резулт=Резулт+Символ(1);
              ЭтоЛатиница=1;
           КонецЕсли;
           Резулт=Резулт+Буква
       КонецЕсли;
   КонецЦикла;
   возврат резулт
КонецФункции
4 Виталий
 
22.12.10
17:59
(1) Это я читал в первую очередь
5 73
 
22.12.10
18:01
6 Виталий
 
22.12.10
18:01
(2), (3) Спасибо, идея понятна!
7 Виталий
 
22.12.10
18:03
Кроме того, только что, я для себя открыл стандарт ГОСТ 30743-2001 (например, http://vsegost.com/Catalog/68/6846.shtml). Я его еще читаю, но там, вроде, написано, что все возможно :)
8 Виталий
 
22.12.10
18:03
(4) В точку :)
9 Виталий
 
22.12.10
18:04
т.е. (5) в точку :)
10 Виталий
 
22.12.10
18:04
Всем спасибо!
11 Serginio1
 
22.12.10
18:05
Вот тебе остаток
function СимволАнсиТуУникоде(Буква)
   
         КодСимв=КодСимвола(Буква)+128;
        Если (КодСимв>=192 и КодСимв<=255) Тогда
            Возврат Символ(КодСимв+1040-192)
        ИначеЕсли КодСимв=168 Тогда
            возврат "Ё"
        ИначеЕсли КодСимв=184 Тогда
            возврат "ё"
        ИначеЕсли КодСимв=185 Тогда
            возврат "№"
        Иначе
            сообщить(КодСимв)
        КонецЕсли;

   
        Возврат ""
КонецФункции
12 Serginio1
 
22.12.10
18:06
Функция ПреобразоватьСтрокуДляКоде128Обратно(стр) экспорт
   ЭтоЛатиница=1;
   резулт="";
   Для сч=1 по СтрДлина(стр) Цикл
       Буква=Сред(стр,сч,1);
       Если КодСимвола(Буква)=1 Тогда
           Если ЭтоЛатиница=1 Тогда
               
               ЭтоЛатиница=0
           Иначе
               ЭтоЛатиница=1
           КонецЕсли;
       
       иначе  
           Если ЭтоЛатиница=0 Тогда
               Резулт=Резулт+СимволАнсиТуУникоде(Буква)//Симв(КодСимв(Буква)+128);

           Иначе
               Резулт=Резулт+Буква
           КонецЕсли;
           
       КонецЕсли;
   КонецЦикла;
   возврат резулт
КонецФункции
13 Fragster
 
гуру
22.12.10
18:06
пихай в base64 и все
14 Виталий
 
22.12.10
18:07
И еще вопрос по теме.
Если я правильно понял, Code128 - это правила кодирования, а EAN-128 - это стандарты, использующие Code128?
15 Виталий
 
22.12.10
18:09
(13) Что есть base64?
16 Serginio1
 
22.12.10
18:11
base64 переводит двоичные данные в текстовый с набором символов из 64
17 Serginio1
 
22.12.10
18:11
(14) да
18 Виталий
 
22.12.10
18:19
(16) Понял, спасибо!
19 Serginio1
 
22.12.10
18:20
(13) +16 но у тебя в итоге получится очень длинная строка, т.к. уникод это два байта и плюс еще увеличение на кодирование 2 в 8 на 2 в 6 то есть на 1.333
20 Виталий
 
22.12.10
18:23
(19) Это я уже понял
21 Serginio1
 
22.12.10
18:30
Единственно, что Code128 сам экранирует символы меньше 32
вводя дополнительные символы