65,186
社区成员




#ifndef CODECONVERTER_H
#define CODECONVERTER_H
#include <iconv.h>
#include <iostream>
class CodeConverter
{
public:
CodeConverter(const char *from,const char *to) {
id = iconv_open(to,from);
}
~CodeConverter() {
iconv_close(id);
}
int converter(char *input,size_t &inlen,char *output,size_t &outlen) {
char **in = &input;
char **out = &output;
return iconv(id,in,&inlen,out,&outlen);
}
private:
iconv_t id;
};
#endif // CODECONVERTER_H
#include <iostream>
#include "CodeConverter.h"
#include <cstring>
using namespace std;
int main()
{
char *msg = "你好";
char out[20] = {'\0'};
size_t outl = sizeof(out);
size_t inl = strlen(msg);
CodeConverter converter("utf-8","unicode");
int r = converter.converter(msg,inl,out,outl);
if ( r != -1) {
// cout <<"len:"<< inl <<" "<<outl <<"unicode:"<< out << endl;
for (int j = 0;j < 20 - (int)outl;++j) {
cout << j << " : " << hex <<((unsigned short int)out[j] & 0x00ff)<< '\n';
}
}