12 IconvCD(
const std::string& fromcode,
const std::string& tocode)
14 cd = iconv_open(tocode.c_str(), fromcode.c_str());
29 (lang.find(
"jp") != lang.npos || lang.find(
"JP") != lang.npos)
30 && (lang.find(
"euc") != lang.npos || lang.find(
"EUC") != lang.npos);
33 const bool shift_jis =
34 (lang.find(
"sjis") != lang.npos || lang.find(
"SJIS") != lang.npos);
38 (lang.find(
"UTF-8") != lang.npos || lang.find(
"UTF8") != lang.npos);
47 static const char *lang = getenv(
"LANG");
53 if (
"EUC-JP" == tocode)
61 const std::string& tocode,
62 const std::string& src)
64 if (fromcode == tocode)
73 const char * inbuf = src.c_str();
74 char outbuf[1024], *outbufptr = outbuf;
75 size_t inbytesleft = src.size(), outbytesleft = 1024;
76 #if (defined __linux__ || defined __APPLE__) 77 typedef char ** iconv_inbuf_t;
79 typedef const char ** iconv_inbuf_t;
83 while ((success = iconv(cd.cd, (iconv_inbuf_t)&inbuf, &inbytesleft,
84 &outbufptr, &outbytesleft)) >= 0
86 if (outbufptr - outbuf >= 512)
88 ret += std::string(outbuf, outbufptr);
93 ret += std::string(outbuf, outbufptr);
static std::string eucToLang(const std::string &src)
static std::string convert(const std::string &fromcode, const std::string &tocode, const std::string &src)
static std::string langToIconvCode(const std::string &lang)
IconvCD(const std::string &fromcode, const std::string &tocode)