Форум русскоязычного сообщества Ubuntu


Автор Тема: Перевести .vcf из Quoted-Printable в UTF-8  (Прочитано 589 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ser_W

  • Автор темы
  • Активист
  • *
  • Сообщений: 341
    • Просмотр профиля
Перевести .vcf из Quoted-Printable в UTF-8
« : 15 Декабрь 2020, 18:57:39 »
Имею вот такуб выгрузку в одном документе.vcf:
BEGIN:VCARD
VERSION:2.1
FN;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20=D0=9F=D1=80=D0=B8=D0=B9=D0=BC=D0=B0=D0=BA=D0=BE=D0=B2
N;ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8:=D0=9F=D1=80=D0=B8=D0=B9=D0=BC=D0=B0=D0=BA=D0=BE=D0=B2=3B=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=3B=3B=3B
Как все это дело перевести в Юникод? Хочется просматривать с Calc'е и, при необходимости, занести в телефон : )

Оффлайн soarin

  • Старожил
  • *
  • Сообщений: 1850
  • ubuntu 20.04
    • Просмотр профиля
Re: Перевести .vcf из Quoted-Printable в UTF-8
« Ответ #1 : 15 Декабрь 2020, 19:01:44 »
Ну берёшь и пишешь.

Я когда-то наоборот писал (Не помню зачем...) - делов на полчаса. Это Java - так-то ну её, проще на питоне подобное написать. Он же везде есть можно сказать.

package csv2vcf;
import java.io.*;
import java.util.BitSet;
import java.util.StringTokenizer;
import java.util.regex.Pattern;
import org.apache.commons.codec.binary.StringUtils;
import org.apache.commons.codec.net.QuotedPrintableCodec;
/**
 *
 * @author soarin
 */
public class Csv2vcf {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String s, name, number, charset;
        if (args.length!=2) {
            System.err.println("Wrong arguments! Use 'csv2vcf.jar input.csv output.vcf' for launch.");
            return;
        }
        try {   
            FileReader fr=new FileReader(args[0]);
            FileWriter fw=new FileWriter(args[1]);
            BufferedReader br=new BufferedReader(fr);
            BufferedWriter bw=new BufferedWriter(fw);
            Pattern p = Pattern.compile("[^a-zA-Z0-9]");
            while ((s=br.readLine())!=null) {
                StringTokenizer st = new StringTokenizer(s, ",");
                if(st.countTokens()>=2) {
                    name=st.nextToken();
                    if (p.matcher(name).find()) {
                        name = StringUtils.newStringUsAscii(
                                QuotedPrintableCodec.encodeQuotedPrintable(new BitSet(), name.getBytes()));
                        charset=";CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE";
                    } else {
                        charset="";
                    }                   
                    number=st.nextToken();
                    // TODO: extra parameters?
                    bw.write("BEGIN:VCARD"); bw.newLine();
                    bw.write("VERSION:2.1"); bw.newLine();
                    bw.write("N"+charset+":;"+name+";;;"); bw.newLine();
                    bw.write("FN"+charset+":"+name); bw.newLine();
                    bw.write("TEL;CELL;PREF:"+number); bw.newLine();
                    bw.write("END:VCARD"); bw.newLine();
                }           
            }
            fr.close(); bw.flush(); fw.close();
        } catch (Exception e) { System.err.println(e.getMessage()); }
    }
}

« Последнее редактирование: 15 Декабрь 2020, 19:05:11 от soarin »

Оффлайн Usermaster

  • Старожил
  • *
  • Сообщений: 1158
    • Просмотр профиля
Re: Перевести .vcf из Quoted-Printable в UTF-8
« Ответ #2 : 15 Декабрь 2020, 22:10:31 »
Кажется в Thunderbird можно загрузить и потом выгрузить в нужной кодировке.

Оффлайн Ser_W

  • Автор темы
  • Активист
  • *
  • Сообщений: 341
    • Просмотр профиля
Re: Перевести .vcf из Quoted-Printable в UTF-8
« Ответ #3 : 18 Декабрь 2020, 22:38:42 »
Usermaster, many thanks!
А в каком формате экспортировать?

Оффлайн Usermaster

  • Старожил
  • *
  • Сообщений: 1158
    • Просмотр профиля
Re: Перевести .vcf из Quoted-Printable в UTF-8
« Ответ #4 : 18 Декабрь 2020, 23:09:58 »
Так с разделителем запятая или с разделителем табуляция.
Я обычно с разделителем запятая выгружаю.
Там вроде не особо разница, выгрузится в csv, А LibreOffice и такую и такую понимает.
Вообще таблица в формате csv открывается прекрасно и в Libre и в MS и в Only.
« Последнее редактирование: 18 Декабрь 2020, 23:12:38 от Usermaster »

 

Страница сгенерирована за 0.061 секунд. Запросов: 26.