- 论坛徽章:
- 0
|
本帖最后由 paktc 于 2010-09-04 23:26 编辑
估计很少人会用到……
我也是偶然遇到要处理这个东西,朋友的手机坏了,换了一个杂牌的便宜手机,
打算把 内存卡上的通讯录转过去,已经提取了联系人信息。
结果杂牌的手机同步软件都没有。尝试选择在T卡新建一个联系人,
列出最新建立的文件,发现是通过建立通讯录文件实现的。 联系人姓名.vcf格式
啊安.vcf
BEGIN:VCARD
VERSION:2.1
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E9=98=BF=E5=AE=89 #这里就是两个字的编码
TEL;CELL:123
END:VCARD
没错编码就是UTF-8的,改变都不行,折腾死了……
关于对照表。网上找了很久未果,
所以我就学着编写了一个 字符转 utf-8编码的脚本 (完整的导出通讯录的东西就不放上来啦)
- #!/usr/bin/perl
- open READ,"<next.x";
- $lv_[1]=00000000;
- $lv_[2]=11000000;
- $lv_[3]=11100000;
- $lv_[4]=11110000;
- $lv_[5]=11111000;
- $lv_[6]=11111100;
- use utf8;
- $a="我";
- printf "%s\n",&code2utf(ord $a);
- print "END!";
- <STDIN>;
- sub code2utf {
- my ($code,$bin,$level,$hex,$tmp,$result);
- $code=$_[0];
- $bin=sprintf "%b",$code;
-
- $level=1;
- if (length($bin)>7) {
- while (length($bin)>=6) {
- $level+=1;
- $bin=~s/.{6}$//;
- $hex=sprintf "%X",&bin2int(10 . $&);
- $result=$hex ."-". $result;
- }
- }
- $tmp=substr($lv_[$level],0,8-length($bin));
- $hex=sprintf "%X",&bin2int($tmp . $bin);
- $result=$hex ."-". $result;
- $result=~s/-$//;
- $result; #result - string
- }
- sub bin2int {
- my ($a,$str,$all,$act);
- $a=$_[0];
- $str="";
- $all=0;
- $act=0;
- do {
- $b=($a % 10) * (2**$act); #** as ^ of the calc
- $all+=$b;
- $act+=1;
- $a=int ($a/10);
- } until ($a==0);
- int ($all);
- }
复制代码
结果为 :
E6-88-91
写的很累赘,请多多指教!
关于utf-8的编码详细信息就不列举啦。 从C语言一站式学习.html 学的一些经验
例如某字符的值 170
UTF-8: 0xC2 0xAA
0xC2 -> 11000010
0xAA -> 10101010
其二进制值 : 170 = 10101010 (也就是分为了10 和101010)
根据以下规则分段转化为utf-8 编码 ,xxx是有效区间
引用资料 :
具体来说,UTF-8编码有以下几种格式:
U-00000000 – U-0000007F: 0xxxxxxx
U-00000080 – U-000007FF: 110xxxxx 10xxxxxx
U-00000800 – U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 – U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 – U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U-04000000 – U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
======================================
10 和101010 对应:
110xxxxx 10xxxxxx -> 11000010 10101010
======================================
ubuntu的字符映射表有列出字符的 各种编码,挺爽的说…… |
|