通常在收发短信的时候,需要将信息编码成UCS2格式发送,接收后需要将UCS2格式的数据解码出来以供显示。
在linux的shell终端以及vim里使用的是UTF8格式,中文占用3个字节,英文及数字占用1个字节。
在UCS2格式中,任何字符都占用2个字节,即中英文、数字都是占用2字节空间。
linux应用层提供了iconv函数来实现各种字符串格式的转换,先来看下如何使用iconv函数将字符串编码成UCS2格式
#include
#include
#include
#define BUF_SIZE 100
int main(int argc, char *argv[])
{
iconv_t cd;
char *p1,*p1b,*p2,*p2b,*p,c;
size_t num1,num2,numb,cnt,ret;
int i;
p1b = p1 = malloc(BUF_SIZE); //调用iconv函数后,p1、p2的值会被改变
p2b = p2 = malloc(BUF_SIZE); //所以使用p1b、p2b保存首地址
memset(p1,0x00,BUF_SIZE);
memset(p2,0x00,BUF_SIZE);
strcpy(p1,argv[1]);
num1 = strlen(p1);
printf("\n");
for(i=0,cnt=0,p=p1b;i