玩转530之通讯录备份与恢复(一)

王朝other·作者佚名  2008-12-27
宽屏版  字体: |||超大  

530能通过红外线将手机中的电话号发送到电脑中,电脑接收到的是一份OUTLOOK通讯录的名片文件。

我们可以利用这个功能来备份手机中的通讯录。但是使用过的玩家一定会说不行,备份出来的文件是中文是乱码不能看。现在我们来分析一下为什么是乱码。

由于我们大陆用的是简体中文的WINDOWS操作系统,该系统对于汉字的默认编码方式为GBK或GB2312。而手机中采用的编码方式为UTF-8的编码方式。由于编码方式的不统一导致我们传入电脑的文件中的中文部分显示为乱码。

知道了乱码的产生原因我们可以通过编写程序进行编码方式转换来达到消除乱码的目的。我采用了JAVA来对文件中的中文进行编码转换。选择JAVA的原因:

1、是因为JAVA本身具有跨平台的功能,本身就有编码转换的API编写起来容易。

2、是告诉大家JAVA的功能是很强大的530不支持JAVA的确是一种遗撼。好了言归正传,我们来说说转码过程。下面是进行UTF-8到GBK的转换程序段,如果能看懂的朋友可以把它加入自己的程序内使用,如果不懂编程的朋友可以给我留言我会将编译好的程序给发过去,或哪位朋友提供一个地方供大家下载。在使用程序前请先安装SUN公司的JDK1.2.2以上版本。下面是JDK1.4.2.02的下载地址http://java.sun.com/webapps/download/Redirect/131148827/289386335946694772-931/j2sdk-1_4_2_02-windows-i586-p.exe 如果不能下载可到http://java.sun.com上查找。在完成转换之后可以通过OUTLOOK中的通讯录中导入功能来将转换过的文件导入OUTLOOK。注:导入时选取名片那一项。

程序片段:

//将文件以UTF8的方式读出,再以WINDOWS默入的编码方式写入。

try{

File f = new File(args[0]);

FileInputStream re1=new FileInputStream(f);

InputStreamReader re=new InputStreamReader(re1,"UTF8");

char[] buf = new char[(int)f.length()];

re.read(buf,0,(int)f.length());

String ss = new String(buf);

if(ss.indexOf("TEL:")>0)

ss=de.insertcalloption(ss);

FileOutputStream fout = new FileOutputStream(args[1]);

fout.write(ss.getBytes("gb2312"));

fout.close();

re.close();

}

catch(Exception e)

{

System.out.println(e.getMessage());

}

/**

*修改其中电话号码行将其修改为能导入OUTLOOK的格式。

*/

public String insertcalloption(String in) {

int i=0;

System.out.println(in);

i=in.indexOf("TEL:");

String ff=in.substring(0,i+3);

String mid=";CELL;VOICE";

String bb=in.substring(i+3);

in=ff+mid+bb;

return in;

}

至于如何将outLook中的通讯录传回手机,且听下回分解。:)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有