34 std::string lang_str (lang_name);
41 std::string codeset_str (codeset_name);
45 std::locale
get_locale (
const std::string &charset,
const std::string &lang)
49 std::locale loc (lang +
"." + charset);
52 catch (std::exception &e)
56 return std::locale (
"");
77 bool is_success =
false;
89 std::string utf8_converted;
91 std::string::pointer utf8_str_ptr = (
char *) utf8_converted.data ();
99 (
unsigned char **) &utf8_str_ptr, &conv_size);
102 conv_status =
intl_euckr_to_utf8 ((
const unsigned char *) in.data (), in.size (), (
unsigned char **) &utf8_str_ptr,
106 intl_binary_to_utf8 ((
const unsigned char *) in.data (), in.size (), (
unsigned char **) &utf8_str_ptr,
117 if (conv_status != 0)
122 utf8_converted.resize (conv_size);
123 utf8_str.assign (utf8_converted);
127 utf8_str.assign (in);
133 std::wstring converted;
134 int nLen = MultiByteToWideChar (CP_UTF8, 0, utf8_str.data (), utf8_str.size (),
NULL,
NULL);
135 converted.resize (nLen);
136 MultiByteToWideChar (CP_UTF8, 0, utf8_str.data (), utf8_str.size (), &converted[0], nLen);
138 std::wstring converted = std::wstring_convert<std::codecvt_utf8<wchar_t>,
wchar_t> {}.from_bytes (utf8_str);
140 out.assign (std::move (converted));
143 catch (
const std::range_error &re)
166 bool is_success =
false;
178 int nLen = WideCharToMultiByte (CP_UTF8, 0, in.data (), in.size (),
NULL, 0,
NULL,
NULL);
179 std::string converted;
180 converted.resize (nLen);
181 WideCharToMultiByte (CP_UTF8, 0, in.data (), in.size (), &converted[0], nLen,
NULL,
NULL);
183 std::string converted = std::wstring_convert<std::codecvt_utf8<wchar_t>,
wchar_t> {}.to_bytes (in);
187 out.assign (std::move (converted));
193 to_str.resize (converted.size());
194 std::string::pointer to_str_ptr = (
char *) to_str.data();
202 (
unsigned char **) &to_str_ptr,
206 conv_status =
intl_utf8_to_euckr ((
const unsigned char *) converted.data (), converted.size (),
207 (
unsigned char **) &to_str_ptr,
212 to_str.assign (in.begin(), in.end());
222 if (conv_status != 0)
227 to_str.resize (conv_size);
228 out.assign (std::move (to_str));
232 catch (
const std::range_error &re)
std::string get_lang_name(const LANG_COLLATION *lang_coll)
std::string get_codeset_name(const LANG_COLLATION *lang_coll)
int intl_euckr_to_utf8(const unsigned char *in_buf, const int in_size, unsigned char **out_buf, int *out_size)
std::locale get_locale(const std::string &charset, const std::string &lang)
void intl_binary_to_utf8(const unsigned char *in_buf, const int in_size, unsigned char **out_buf, int *out_size)
bool convert_to_string(std::string &out, const std::wstring &in, const INTL_CODESET codeset)
const char * lang_get_codeset_name(int codeset_id)
LANG_LOCALE_DATA * default_lang
enum intl_codeset INTL_CODESET
int intl_utf8_to_euckr(const unsigned char *in_buf, const int in_size, unsigned char **out_buf, int *out_size)
#define INTL_CODESET_MULT(codeset)
int intl_fast_iso88591_to_utf8(const unsigned char *in_buf, const int in_size, unsigned char **out_buf, int *out_size)
int intl_utf8_to_iso88591(const unsigned char *in_buf, const int in_size, unsigned char **out_buf, int *out_size)
bool convert_to_wstring(std::wstring &out, const std::string &in, const INTL_CODESET codeset)