From dd48f1495916252861aa63952bed31d1466c58a9 Mon Sep 17 00:00:00 2001 From: gwdwyy Date: Fri, 12 Jul 2013 15:10:18 +0800 Subject: [PATCH] update cppcommon for gbkToUtf8 --- src/cppcommon/Makefile | 2 +- src/cppcommon/str_functs.cpp | 75 ++++++++++++++++++++++++++++++------ src/cppcommon/str_functs.h | 4 ++ 3 files changed, 68 insertions(+), 13 deletions(-) diff --git a/src/cppcommon/Makefile b/src/cppcommon/Makefile index 2d562ec..cb2d2cf 100644 --- a/src/cppcommon/Makefile +++ b/src/cppcommon/Makefile @@ -28,7 +28,7 @@ file_functs.test: file_functs.cpp file_functs.h io_functs.test: io_functs.cpp io_functs.h g++ -o $@ $< -DTEST_IO_FUNCTS str_functs.ut: str_functs.cpp str_functs.h - g++ -o $@ $< -DTEST_STR_FUNCTS + g++ -o $@ $< -DTEST_STR_FUNCTS -liconv vec_functs.test: vec_functs.cpp vec_functs.h vec_functs.tcc g++ -o $@ $< -DTEST_VEC_FUNCTS diff --git a/src/cppcommon/str_functs.cpp b/src/cppcommon/str_functs.cpp index 24dd35b..f014992 100644 --- a/src/cppcommon/str_functs.cpp +++ b/src/cppcommon/str_functs.cpp @@ -307,6 +307,49 @@ namespace CPPCOMMON return res; } + //iconv + int code_convert(const char *from_charset,const char *to_charset,char *inbuf,size_t inlen,char *outbuf,size_t outlen) + { + iconv_t cd; + + char **pin = &inbuf; + char **pout = &outbuf; + + cd = iconv_open(to_charset,from_charset); + if (cd==NULL) + { + //cout<<__FILE__<<__LINE__< utf8 + string gbkToUtf8(const string& gbk) + { + //cout<<__FILE__<<__LINE__< tmp; + //tmp.push_back("1"); + ////tmp.push_back("2"); + ////tmp.clear(); + //cout< tmp; - tmp.push_back("1"); - //tmp.push_back("2"); - //tmp.clear(); - cout< #include #include +#include +#include #include "typedefs.h" namespace CPPCOMMON { @@ -35,6 +37,8 @@ namespace CPPCOMMON string unicodeToUtf8(const string& uniStr); int utf8ToUnicode(const char* inutf8, int len, uint16_t* unicode); string utf8ToUnicode(const string& utfStr); + int code_convert(const char *from_charset,const char *to_charset,char *inbuf,size_t inlen,char *outbuf,size_t outlen); + string gbkToUtf8(const string& gbk); inline uint16_t twocharToUint16(char high, char low) {