Unicode Contact - vCard 2.1
A fictional multilingual contact for checking Unicode decoding and round trips between legacy and current vCard versions. This member uses vCard 2.1 syntax.
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8:Yamada;Miyuki;;;
FN;CHARSET=UTF-8:Miyuki Yamada / 山田 美雪
EMAIL;INTERNET:miyuki.yamada@example.com
NOTE;CHARSET=UTF-8:Works in Toronto; speaks 日本語 and Français.
END:VCARD
Specifications
- Format
- vCard 2.1
- Contacts
- 1
- Display Name
- Miyuki Yamada / 山田 美雪
- Fields
- FN, N, EMAIL, NOTE
- Line Endings
- CRLF
Testing contract
Expected to pass- Scenario
- Import Miyuki Yamada / 山田 美雪 from the vCard 2.1 member and compare normalized fields across the three-file group.
- Expected result
- Normalize the FN and N values as UTF-8 without mojibake; retain the Japanese and French note text.
What is a .vcf file?
VCF (vCard) is a plain-text format for electronic business cards, storing contact details like names, phone numbers, emails, and addresses as property lines within BEGIN and END VCARD blocks. Multiple vCards can be concatenated in one file. It is the standard for contact exchange across devices.
How to use this file
Use an example VCF to test contact import, multi-card parsing, property and encoding handling, and interoperability between address-book applications.
How to use this file for testing
“Unicode Contact - vCard 2.1” is a deterministic Novus Examples fixture for Contact parsing, Conversion testing. vCard (.vcf) contact files with names, emails, phones, and addresses — for testing contact importers.
Documented properties for this file: CRLF · vCard 2.1. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Data fixtures document their exact quirks — delimiters, encodings, null handling, schema, and row counts — in the spec table. Point your parser or importer at the file and assert it handles the documented edge cases; clean and deliberately-messy siblings make before/after diffs straightforward.
Code examples
import vobject # pip install vobject
for card in vobject.readComponents(open("unicode-vcard-2-1.vcf").read()):
print(card.fn.value)Related files
- vcfEmbedded-Photo Contact - vCard 2.1A fictional contact carrying the same tiny portrait in the version-specific photo syntax used by vCard 2.1, 3.0 and 4.0. This member uses vCard 2.1 syntax.

- vcfEmbedded-Photo Contact - vCard 3.0A fictional contact carrying the same tiny portrait in the version-specific photo syntax used by vCard 2.1, 3.0 and 4.0. This member uses vCard 3.0 syntax.

- vcfEmbedded-Photo Contact - vCard 4.0A fictional contact carrying the same tiny portrait in the version-specific photo syntax used by vCard 2.1, 3.0 and 4.0. This member uses vCard 4.0 syntax.

- vcfMulti-Value Contact - vCard 2.1A fictional contact with repeated typed properties for testing importers that otherwise keep only the first value. This member uses vCard 2.1 syntax.

- vcfMulti-Value Contact - vCard 3.0A fictional contact with repeated typed properties for testing importers that otherwise keep only the first value. This member uses vCard 3.0 syntax.

- vcfMulti-Value Contact - vCard 4.0A fictional contact with repeated typed properties for testing importers that otherwise keep only the first value. This member uses vCard 4.0 syntax.

Generated by generation/p6_core.py. Free for any use, no attribution required — license.