Conversion entre le codage de caractères utf-8 et gb2312
Requête le codage des caractères Interrogation du codage du jeu de caractères Kanji
Le gb2312 utilisé par l'émetteur et le récepteur entre les appareils, par exemple, le mot "Zhao" est codé comme (D4E7), et le fichier txt téléchargé depuis le réseau est codé comme utf-8.
Afin de comparer les deux types de fichiers, il doit être converti en un encodage unifié. Ici, utf -8 est converti en gb2312
Implémentation C
//代码转换:从一种编码转为另一种编码
static int code_convert(char * from_charset, char * to_charset, char * inbuf, size_t inlen, char * outbuf, size_t outlen)
{
iconv_t cd;
char **pin = &inbuf;
char **pout = &outbuf;
int ret ;
cd = iconv_open(to_charset, from_charset);
if(cd == (iconv_t)-1)
{
perror("open iconv_open failed");
return -1;
}
memset(outbuf,0,outlen);
ret = iconv(cd, (char **)pin, &inlen, (char **)pout, &outlen);
if( ret < 0)
{
perror("iconv failed");
iconv_close(cd); /*by zyy*/
return -1;
}
iconv_close(cd);
return 0;
}
/*UTF-8 码转为GB2312码*/
static int u2g(char *inbuf, size_t inlen, char *outbuf, size_t outlen)
{
int ret;
ret =code_convert("UTF-8","GBK//IGNORE",inbuf,inlen,outbuf,outlen);
return ret;
}