#pragma once
#include "iconv.h"
#pragma comment(lib,"libiconv.lib")
#include <iostream>
class UTF_8
{
private:
iconv_t cd;
public:
UTF_8(const char *from_charset,const char *to_charset)
{
cd = iconv_open(to_charset,from_charset);
}
~UTF_8(void)
{
iconv_close(cd);
}
// 转换输出
int convert(char *inbuf,int inlen,char *outbuf,int outlen) {
char **pin = &inbuf;
char **pout = &outbuf;
memset(outbuf,0,outlen);
return iconv(cd,(const char **)pin,(size_t *)&inlen,pout,(size_t *)&outlen);
}
};
/******************************************************************************
使用方法
char *in_utf8 = "姝e?ㄥ??瑁?";
char *in_gb2312 = "请输入";
char out[256];
// utf-8-->gb2312
UTF_8 cc = UTF_8("utf-8","gb2312");
cc.convert(in_utf8,strlen(in_utf8),out,256);
// gb2312-->utf-8
UTF_8 cc2 = UTF_8("gb2312","utf-8");
cc2.convert(in_gb2312,strlen(in_gb2312),out,256);
#include "iconv.h"
#pragma comment(lib,"libiconv.lib")
#include <iostream>
class UTF_8
{
private:
iconv_t cd;
public:
UTF_8(const char *from_charset,const char *to_charset)
{
cd = iconv_open(to_charset,from_charset);
}
~UTF_8(void)
{
iconv_close(cd);
}
// 转换输出
int convert(char *inbuf,int inlen,char *outbuf,int outlen) {
char **pin = &inbuf;
char **pout = &outbuf;
memset(outbuf,0,outlen);
return iconv(cd,(const char **)pin,(size_t *)&inlen,pout,(size_t *)&outlen);
}
};
/******************************************************************************
使用方法
char *in_utf8 = "姝e?ㄥ??瑁?";
char *in_gb2312 = "请输入";
char out[256];
// utf-8-->gb2312
UTF_8 cc = UTF_8("utf-8","gb2312");
cc.convert(in_utf8,strlen(in_utf8),out,256);
// gb2312-->utf-8
UTF_8 cc2 = UTF_8("gb2312","utf-8");
cc2.convert(in_gb2312,strlen(in_gb2312),out,256);
********************************************************************************/