Какие форматы/версии и кодировки vCard поддерживаются для импорта?

Я попытался импортировать файлы vCard с помощью приложения «Контакты» по умолчанию в Samsung Galaxy S6 ( подробности здесь ), но я не уверен в требуемом формате (поддерживаемая версия vCard) и используемой кодировке.

Я использовал Windows-1250кодировку, и это сработало, но все специальные символы были импортированы как ?. При использовании UTF-8не удалось импортировать полностью. Какова рекомендуемая кодировка символов и рекомендуемый формат/версия vCard?

В настоящее время мой файл vCard выглядит так с кодировкой Windows-1250:

BEGIN:VCARD
VERSION:3.0
NAME:XXXX Günzel
N:Günzel;XXXXX;;;
TEL;CELL:+XXXXXXXXX
END:VCARD
Вы указали кодировку с вашими записями vcard? См. здесь примеры.
Нет, я не... Должен ли я? Какая кодировка по умолчанию?
Смотрите мой ответ ниже :)

Ответы (1)

На самом деле это не вопрос Android, но если вы спрашиваете, «как я могу правильно импортировать этот файл VCard в мою адресную книгу Android», то в файле VCard могут потребоваться некоторые корректировки. Я нашел сводку спецификации в этом комментарии к проблеме Github :

  1. vCard 2.1 по умолчанию имеет формат US-ASCII. Отдельные свойства можно переопределить с помощью CHARSET=параметра.
  1. vCard 3.0 требует, чтобы MIME-тип включал набор символов, например Content-Type: text/vcard; charset=ISO-8859-1.
  2. vCard 4.0 всегда имеет кодировку UTF-8.

Приведем пример для 1., взятый из этой статьи :

НАЧАЛО:ВКАРТА
FN;CHARSET=UTF-8:Mr. Доктор Джон Морис Бенджамин Доу Ph.D.\, JD
N;CHARSET=UTF-8:Доу;Джон;Морис,Бенджамин;г-н,д-р;доктор философии,JD
КОНЕЦ:ВИДЕО

Дальнейшие чтения включают RFC 6350 :)

Так что, когда у меня есть vCard версии 3.0 с кодировкой UTF-8, то мне ничего не нужно делать, я полагаю?The charset (see [RFC3536] for internationalization terminology) for vCard is UTF-8 as defined in [RFC3629]. There is no way to override this. It is invalid to specify a value other than "UTF-8" in the "charset" MIME parameter (see Section 10.1).
Я бы так прочитал, да. Хотя не то, чтобы я с ним играл :)
Кажется, у меня было два недопустимых символа в начале файла, созданного C #, я проверю это позже.
Спецификация ? :) Довольно часто возникает эта проблема со сценариями SQL в Oracle. Даже с кодировкой UTF8 SQL*Plus не может обрабатывать спецификацию в начале файлов (они должны быть сохранены как "UTF8 без спецификации"). Хотя не уверен, что здесь так.
Да БОМ. Ваш ответ был полезен, спасибо, попробую, но телефон не мой, поэтому мне потребуется время.
Не торопись! По крайней мере, у вас есть несколько указателей, которым вы можете следовать :) Удачи!
Начиная с Android N / Nougat / 7.0, приложение AOSP Contacts может импортировать только vCard 2.1 (который также является экспортируемым форматом). Любое отклонение от формата vCard 2.1, в том числе простое изменение идентификатора версии, приведет к сбою импорта.
Спасибо за этот отчет, @Dan — но это опыт, который вы сделали на своем устройстве (который может быть специфичным для устройства), или есть источник, который вы могли бы назвать (который я затем должен включить в свой пост)? Звучит довольно раздражающе, что от новых форматов пришлось отказаться в пользу более старых. Ожидалось обратное.
@Иззи, согласен. Я не уверен, зависит ли это от устройства или ПЗУ, и я не могу найти какой-либо конкретный исходный код, чтобы продемонстрировать это. Андроид расстраивает.
к сожалению, я должен подтвердить, что экспортируется только vCard 2.1, и только vCard 2.1 и 3.0 могут быть импортированы. - до сих пор нет поддержки vCard 4.0 !
still no support for vCard 4.0!ситуация не изменилась с 2018 по 2022 год, к сожалению. Я пишу это с Android 12, и это все еще vCard 2.1 :(