Ubuntu Eclipse C++ UTF-8轉換 (UTF-8:3字節表示一個漢字的問題)

在Ubuntu 下用Eclipse做C++開發的時候,Eclipse默認字符UTF-8,UTF-8是用三個字節來表示一個漢字的,但是很多時候,我們需要的是2個字節表示一個漢字,這時候,可以用iconv函數實現,具體如下:

#include <stdio.h>
#include <string.h>
#include <iconv.h>
int main()
{
    char inbuf[50] = "我";
    char outbuf[60];
    memset(outbuf,'/0',sizeof(outbuf));
    char *pin = inbuf;
    char *pout = outbuf;
    printf(">>before convert:%d",strlen(inbuf));
    size_t inlen = strlen(inbuf) + 1;
    size_t outlen = 60;
    iconv_t cd = iconv_open("GB2312","UTF-8");
    if (cd == (iconv_t) (-1))
    {
        perror("iconv_open");
    }
    if ((int) iconv(cd, &pin, &inlen, &pout, &outlen) == -1)
    {
        perror("iconv()");
    }
    printf(">>>before convert,UTF8:%s,length:%d/n", inbuf,strlen(inbuf));
    printf(">>>after convert,GB2312:%s,length:%d/n", outbuf,strlen(outbuf));
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章