首页
/
每日頭條
/
科技
/
注釋過的vcf文件怎麼分析
注釋過的vcf文件怎麼分析
更新时间:2026-04-08 01:51:54

需要需要生成vcf 聯系人通訊錄,想到最快的是C# 做桌面應用程序,搜索了一下發現 contacts.vcf 文件其實就是文本,可以用記事本打開,格式如下

BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-8;Encoding=QUOTED-PRINTABLE:Ben TEL;CELL:123546 END:VCARD

如果是多個就一直這樣排列下去;

public static void CreateCard(string name,string phoneNumber,bool isUtf8Encode) { String fileName = string.Format(@"D:/{0}_{1}.vcf", name, isUtf8Encode ? "Android":"windows"); FileStream fs = new FileStream(fileName, FileMode.Create); StreamWriter sw = new StreamWriter(fs); sw.WriteLine("BEGIN:VCARD"); sw.WriteLine("VERSION:2.1"); sw.WriteLine("N;charSET=UTF-8;ENCODING=QUOTED-PRINTABLE:" EncodeQuotedPrintable(name, isUtf8Encode)); sw.WriteLine("TEL;CELL:" phoneNumber); sw.WriteLine("END:VCARD"); sw.Flush(); sw.Close(); fs.Close(); ; }

Quoted-Printable編碼定義,其實很簡單,就是将要編碼的文字轉換成byte字節流,然後使用十六進制的char型和“=”聯合表達出來,如=0C表示12。下面提供編碼及解碼的方式:

public static string EncodeQuotedPrintable(string value,bool isUtf8Encode) { if (string.IsNullOrEmpty(value)) return value; StringBuilder builder = new StringBuilder(); byte[] bytes = isUtf8Encode? Encoding.UTF8.GetBytes(value): Encoding.Default.GetBytes(value); foreach (byte v in bytes) { // The following are not required to be encoded: // - Tab (ascii 9) // - Space (ASCII 32) // - Characters 33 to 126, except for the equal sign (61). if ((v == 9) || ((v >= 32) && (v <= 60)) || ((v >= 62) && (v <= 126))) { builder.Append(Convert.ToChar(v)); } else { builder.Append('='); builder.Append(v.ToString("X2")); } } char lastChar = builder[builder.Length - 1]; if (char.IsWhiteSpace(lastChar)) { builder.Remove(builder.Length - 1, 1); builder.Append('='); builder.Append(((int)lastChar).ToString("X2")); } return builder.ToString(); } public static string DecodeQuotedPrintable(string input, string charSet) { Encoding enc; try { enc = Encoding.GetEncoding(charSet); } catch { enc = new UTF8Encoding(); } var occurences = new Regex(@"(=[0-9A-Z]{2}){1,}", RegexOptions.Multiline); var matches = occurences.Matches(input); foreach (Match match in matches) { try { byte[] b = new byte[match.Groups[0].Value.Length / 3]; for (int i = 0; i < match.Groups[0].Value.Length / 3; i ) { b[i] = byte.Parse(match.Groups[0].Value.Substring(i * 3 1, 2), System.Globalization.NumberStyles.AllowHexSpecifier); } char[] hexChar = enc.GetChars(b); input = input.Replace(match.Groups[0].Value, new String(hexChar)); } catch {; } } input = input.Replace("?=", "").Replace("\r\n", ""); return input; }

由于outlook 和Android 的解碼方式不同,所以在編碼的時候也需要注意,Android使用的是Utf-8, 而outlook 使用的是ascii,所以這裡需要注意; utf8占用3個字節,ascii 占用兩個字節;

下面是通過UTF-8生成出來 的

BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E5=B0=8F=E6=9B=BE TEL;CELL:13912341234 END:VCARD

下面是通過default (ASCII)生成出來 的

BEGIN:VCARD VERSION:2.1 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=D0=A1=D4=F8 TEL;CELL:13912341234 END:VCARD

注釋過的vcf文件怎麼分析(C生成vcf文件源代碼)1

完整源代碼見CSDN 搜索 C# 生成VCF demo源代碼,支持Android,outlook QuotedPrintable 中文編碼

或者私信給我

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
cpu後面的k和f什麼意思
cpu後面的k和f什麼意思
以華為MateBookX,win10為例。K代表超頻,這種CPU是生活中主流,很多遊戲玩家的不二之選,可以自由調節超頻,除了X之外,帶有K的CPU就是同一代數中最強的CPU,比如I7-8700K性能就要強于I7-8700K。F指的是不含有核顯的處理器,安裝這款處理器需要使用獨立顯卡才可以正常使用,比如IntelI5-9400與I5-9400F。CPU一般指中央處理器,中央處理器(CPU),是電子計
2026-04-08
vivox21手機密碼忘記了怎麼辦
vivox21手機密碼忘記了怎麼辦
1、當連續輸錯5次鎖屏密碼或圖案度密碼後,手機屏幕知将彈出【手機已鎖定】。2、可點擊屏幕上的【忘記密碼】,接着跳轉至身份驗證界面。3、輸入已設置道的密保問題答案,待屏幕提示【身份驗證成功,請重置密碼】後,設置一專個新的鎖屏密碼即可用于屏幕解鎖。4、若忘屬記保密問題答案,請聯系vivo官方客服處理。
2026-04-08
幼兒園收費高的原因有哪些
幼兒園收費高的原因有哪些
第一、幼兒園比較稀缺。現在幼兒園的時候之所以很高,就是因為不管是城市還是鄉鎮幼兒園的數量都比較少,有時候在大街上随便走一走看見的小學都比較多,但是幼兒園的數量明顯就少,俗話說物以稀為貴,幼兒園的數量少價格方面自然就會貴。第二、運營成本上漲。現在幼兒園的收費之所以很高,就是因為現在幼兒園的運營成本慢慢的上漲了,人力方面的成本不僅在上漲,土地方面的成本也在上漲,很多幼兒園為了走可持續發展道路,就會把幼
2026-04-08
真皮座椅怎麼清洗
真皮座椅怎麼清洗
1、用吸塵器清潔座椅,先把灰塵和大顆粒的污垢吸走,以免在後面清潔時劃傷皮革。2、如果沒有清洗劑,那麼可以用肥皂水代替,用幹淨毛巾蘸少量肥皂水,輕輕擦拭座椅。3、如果座椅比較髒,可以配合軟毛刷輕輕擦拭皮革,然後再用毛巾擦掉。4、肥皂水清潔後,用不含肥皂的濕毛巾擦拭幾遍,皮革即可恢複幹淨。5、如果有清洗劑,将清洗劑直接噴灑在座椅上,然後用軟毛刷輕輕擦拭。6、清潔後應通風晾幹,直到座椅完全幹燥。
2026-04-08
怎麼查微信聊天記錄
怎麼查微信聊天記錄
查看微信聊天記錄首先要打開微信APP,點擊對方的“頭像”圖标,進入設置頁面後點擊右上角的“三點”符号,然後點擊頭像下方的“查找聊天記錄”選項,輸入相關的聊天信息後,點擊右下角的“搜索”選項即可。1、微信查找聊天記錄首先需要打開微信APP,點擊對方的“頭像”圖标。2、然後點擊聊天頁面右上角的“三點”符...
2026-04-08
Copyright 2023-2026 - www.tftnews.com All Rights Reserved