The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

Перекодирование русских символов вида =D0=9B в транслит
Данная задача появилась когда потребовалось перенести адресную книгу с одного
телефона в другой. Использовался wammu. Принцип был таков: подключив первый
телефон экспортировать адерсную книгу в .vcf файл, потом подключить второй
телефон и импортировать в него .vcf файл. Проблема в том, что русские имена
контактов не хотели импортироваться. Было принято решение перекодировать их в транслит.

В .vcf файле имя на русском было записано вот в такой форме:

   N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=D0=92=D0=B0=D1=81=D1=8F

Очевидно, что это юникод, оформленный в формате Quoted-Printable.
Для перевода нужно составить таблицу соответствия таких вот комбинаций
транслитерированым символам - в этом, пожалуй, основная сложность задачи.

Внизу скрипт, который выведет команду, которой можно перекодировать файлы.
Мягкий и твердый знаки игнорируются.

   #!/bin/sh

   src=(\\
   =D0=90 =D0=91 =D0=92 =D0=93 =D0=94 =D0=95 =D0=96 =D0=97 =D0=98 =D0=99 =D0=9A =D0=9B =D0=9C =D0=9D =D0=9E =D0=9F =D0=A0 =D0=A1 =D0=A2 =D0=A3 =D0=A4 =D0=A5 =D0=A6 =D0=A7 =D0=A8 =D0=A9 =D0=AA =D0=AB =D0=AC =D0=AD =D0=AE =D0=AF =D0=B0 =D0=B1 =D0=B2 =D0=B3 =D0=B4 =D0=B5 =D0=B6 =D0=B7 =D0=B8 =D0=B9 =D0=BA =D0=BB =D0=BC =D0=BD =D0=BE =D0=BF =D1=80 =D1=81 =D1=82 =D1=83 =D1=84 =D1=85 =D1=86 =D1=87 =D1=88 =D1=89 =D1=8A =D1=8B =D1=8C =D1=8D =D1=8E =D1=8F)
   res=(\\
      A       B     V     G        D     Ye    Zh      Z      I      Y      K      L      M      N      O      P        R       S     T     U        F      H    Ts      Ch     Sh    Sch     Ь      Y      Ь      E      Yu     Ya       a       b     v     g        d     ye    zh      z      i      y      k      l      m      n      o      p    r       s     t     u        f      h    ts      ch     sh    sch     Ь      y      Ь      e      yu     ya)

   CMD=""
   for ((A=0;A<64;A++)) ; do
   	CMD=`echo "$CMD | sed -e s/${src[$A]}/${res[$A]}/g"`
   done

   CMD=`echo "cat file.vcf $CMD | sed -e s/Ь//g | sed -e s/N\\;CHARSET=UTF-8\\;ENCODING=QUOTED-PRINTABLE/N/g | less"`
   echo "$CMD" 


Для раскодирования quoted-printable блоков можно использовать простой perl-скрипт:

   echo "=D0=92=D0=B0=D1=81=D1=8F" | perl -e 'use MIME::Decoder; $decoder = new MIME::Decoder "quoted-printable"; $decoder->decode(\\*STDIN, \\*STDOUT);'
 
12.02.2012 , Автор: Kroz
Ключи: decode, vcf / Лицензия: CC-BY
Раздел:    Корень / Пользователю / Русификация

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, Аноним, 21:47, 12/02/2012 [ответить] [смотреть все]     [к модератору]
  • –1 +/
    Сильно Но я для этих же целей использовал машину с виндовс и программы от произ... весь текст скрыт [показать]
     
     
  • 2.2, Crazy Alex, 23:17, 12/02/2012 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +1 +/
    Понимаете, у приличного пользователя Power User который , не говоря о программи... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.3, JL2001, 04:19, 13/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    и установка виндовс чтоб установить программы грёбанного производителя которы... весь текст скрыт [показать]
     
  • 1.4, ABATAPA, 08:09, 13/02/2012 [ответить] [смотреть все]    [к модератору]  
  • +3 +/
    Что только не сделают люди, не желающие или не умеющие искать существующие ответы и решения...

    $ echo 'N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=D0=92=D0=B0=D1=81=D1=8F' | recode -f /QP..utf8
    N;CHARSETUTF-8;ENCODINGQUOTED-PRINTABLE:Вася

     
     
  • 2.5, Аноним, 10:15, 13/02/2012 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • –1 +/
    Что только не делают люди, вместо простого универсального скрипта качающие, комп... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.6, Cuernud, 10:39, 13/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    А что, есть дистрибутивы, в репах которых нет recode Так и не понял - ЗАЧЕМ Че... весь текст скрыт [показать]
     
     
  • 4.7, Аноним, 11:58, 13/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Не обращай внимания, каждому хочется изобрести свои велосипед и запилить статью ... весь текст скрыт [показать]
     
  • 4.9, Kroz, 15:05, 13/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Тем что в таком виде не заливался на телефон Не пропускал русские буквы Если р... весь текст скрыт [показать]
     
     
  • 5.12, Аноним, 16:21, 13/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Этот ваш fly - совершенно левая китайчатина сляпаная на коленке Простите уж за ... весь текст скрыт [показать]
     
  • 5.19, Cuernud, 09:50, 15/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Кроме выкиньте этот телефон ничего в голову не приходит, как ни странно ... весь текст скрыт [показать]
     
     
  • 6.22, Аноним, 22:46, 15/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Да теперь я буду хотя-бы знать что этот fly не просто Г а совсем Г Спасибо ч... весь текст скрыт [показать]
     
     
  • 7.24, trdm, 19:09, 20/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    У меня знакомые в рем-центре Их высказывание о Fly более чем нелестные чаще др... весь текст скрыт [показать]
     
  • 3.32, NavDotRu, 23:55, 24/02/2012 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Кстати не лишним было бы добавить - это не очень сложно
     
  • 2.10, Kroz, 15:08, 13/02/2012 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Про утилиту recode не знал, спасибо И, да, нужен именно транслит Наверное еще ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.15, gegMOPO4, 17:36, 13/02/2012 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Да, есть. recode.
     
  • 1.8, Аноним, 12:15, 13/02/2012 [ответить] [смотреть все]    [к модератору]  
  • +/
    не нужно придумывать кодировщики, чтобы потом раскодировщики изобретать
     
  • 1.11, Аноним, 16:19, 13/02/2012 [ответить] [смотреть все]     [к модератору]  
  • –2 +/
    Эпический набор костылей и велосипедов Да еще транслит На нем уже даже старые ... весь текст скрыт [показать]
     
  • 1.13, dima, 16:53, 13/02/2012 [ответить] [смотреть все]    [к модератору]  
  • +/
    пишу только на транслите.
    так как размер СМС в 2 раза большем чем на руси.
     
     
  • 2.14, Александр, 17:09, 13/02/2012 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +2 +/
    попробуйте звонить, за минуту можно сказать больше чем написать
     
     
  • 3.17, Аноним, 23:35, 13/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Такие обычно звонят, и пытаются или выпалить все в бесплатные 3 секунды, или про... весь текст скрыт [показать]
     
     
  • 4.20, Cuernud, 09:52, 15/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +1 +/
    Именно И не пишут транслитом Сообщения, написанные транслитом будь то SMS или... весь текст скрыт [показать]
     
     
  • 5.34, Аноон, 09:58, 28/02/2012 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Транслит на ощупь определяете?
     
  • 4.38, А, 12:43, 22/03/2012 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Такое впечатление, что попал в 2001 год. Fly, "позвонил и сбросил"...
     
  • 1.16, mee too, 21:37, 13/02/2012 [ответить] [смотреть все]    [к модератору]  
  • +/
    Йода мастер syncml падавану юному использовать советует.
     
     
  • 2.18, Аноним, 11:15, 14/02/2012 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    а если его нет в телефоне?
     
  • 1.21, cvsup, 16:30, 15/02/2012 [ответить] [смотреть все]    [к модератору]  
  • +/
    > echo "=D0=92=D0=B0=D1=81=D1=8F" | perl -e 'use MIME::Decoder; $decoder = new MIME::Decoder "quoted-printable"; $decoder->decode(\*STDIN, \*STDOUT);'

    echo "=D0=92=D0=B0=D1=81=D1=8F" | perl -e 'use MIME::Decoder; $decoder = new MIME::Decoder "quoted-printable"; $decoder->decode(\*STDIN, \*STDOUT);' | iconv -f utf-8

     
     
  • 2.26, konst, 15:32, 21/02/2012 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    echo D0 92 D0 B0 D1 81 D1 8F 124 perl -e use MIME Decoder decoder ne... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.27, Аноним, 21:15, 21/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Это совсем не транслит, даже в вашем примере вместо ya выводит q Не говоря ... весь текст скрыт [показать]
     
     
  • 4.28, konst, 01:13, 22/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    1 все-таки транслит 2 самый четкий транслит См echo Вася Пупкин 124 ico... весь текст скрыт [показать]
     
     
  • 5.31, Аноним, 13:38, 22/02/2012 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    А теперь попробуйте добавить символы латиницы в строку Вася Пупкин Превыкайте... весь текст скрыт [показать]
     
  • 1.23, Аноним, 16:23, 17/02/2012 [ответить] [смотреть все]     [к модератору]  
  • +/
    Лучше если б сделали доработку модуля Template Plugin Translit RU и закоммити... весь текст скрыт [показать]
     
  • 1.25, trdm, 19:12, 20/02/2012 [ответить] [смотреть все]    [к модератору]  
  • +/
    Решал подобную задачу недавно:
    http://trdm.byethost31.com/topic.php?id=42&page=1
     
  • 1.29, pavlinux, 02:44, 22/02/2012 [ответить] [смотреть все]    [к модератору]  
  • +/
    Митрофаныч, а ну-ка покажи народу sed-дзен-буддизм! :)
     
     
  • 2.30, Andrey Mitrofanov, 10:47, 22/02/2012 [^] [ответить] [смотреть все] [показать ветку]     [к модератору]  
  • +/
    Уймись уже, фанклуб ходячий И без меня всё обсудили Рассказать что ли, как ... весь текст скрыт [показать] [показать ветку]
     
  • 1.35, Аноним, 22:53, 29/02/2012 [ответить] [смотреть все]    [к модератору]  
  • +/
    Хорошая учебная статья
     
  • 1.36, Oinari, 13:49, 03/03/2012 [ответить] [смотреть все]    [к модератору]  
  • +/
    http://www.artlebedev.ru/tools/decoder/
     
  • 1.44, wanderer, 12:16, 29/11/2013 [ответить] [смотреть все]    [к модератору]  
  • +/
    Смотри Декодер от студии А. Лебедева http://www.artlebedev.ru/tools/decoder/advanced/
     
  • 1.54, михаил, 18:14, 06/10/2016 [ответить] [смотреть все]     [к модератору]  
  • +/
    bin sh src D0 90 D0 91 D0 92 D0 93 D0 94 D0 95 D0 96 D0 97 ... весь текст скрыт [показать]
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor