博客文章

Linux字符集的转换

作者: andy.      时间: 2016-09-03 10:11:30

很简单,先初始化一个iconv_t的描述符(填入原来的编码格式和要转换成的字符集),然后转换,最后关闭描述符就行了。看代码convert:

void convert(char * src, int src_length, char * dest, int dest_length){
        iconv_t cd = iconv_open("UTF-8", "GBK");
        if(cd == (iconv_t)-1){
                perror("");
                exit(-1);
        }
        size_t count = iconv(cd, &src, &src_length, &dest, &dest_length);
        if(count == -1){
                perror("");
                exit(-1);
        }
        iconv_close(cd);
}

int main(int argc, char * argv[]){
        char * path = argv[1];
        int count;

        char src[1024];
        char dest[1024];
        memset(src, 0, 1024);
        memset(dest, 0, 1024);

        FILE * stream = fopen(path, "r");

        while(fgets(src, 1024, stream) != NULL){
                convert(src, strlen(src), dest, 1024);
                printf("%s", dest);
                memset(src, 0, 1024);
                memset(dest, 0, 1024);
        }
        fclose(stream);
}

blob.pngblob.png