diff --git a/src/icu/numeric.cpp b/src/icu/numeric.cpp index 7316f176..df08e4a0 100644 --- a/src/icu/numeric.cpp +++ b/src/icu/numeric.cpp @@ -360,12 +360,12 @@ template struct icu_numpunct : public numpunct { typedef std::basic_string string_type; public: - icu_numpunct(icu::Locale const &loc) + icu_numpunct(cdata const &d) { UErrorCode err = U_ZERO_ERROR; - icu::NumberFormat *fmt = icu::NumberFormat::createInstance(loc, UNUM_DECIMAL, err); + icu::NumberFormat *fmt = icu::NumberFormat::createInstance(d.locale, UNUM_DECIMAL, err); if (icu::DecimalFormat *dec = dynamic_cast(fmt)) { - boost::locale::impl_icu::icu_std_converter cnv("UTF-8"); + boost::locale::impl_icu::icu_std_converter cnv(d.encoding); const icu::DecimalFormatSymbols *syms = dec->getDecimalFormatSymbols(); decimal_point_ = cnv.std(syms->getSymbol(icu::DecimalFormatSymbols::kDecimalSeparatorSymbol)); thousands_sep_ = cnv.std(syms->getSymbol(icu::DecimalFormatSymbols::kGroupingSeparatorSymbol)); @@ -404,7 +404,7 @@ std::locale install_formatting_facets(std::locale const &in,cdata const &cd) if(!std::has_facet(in)) { tmp=std::locale(tmp,new icu_formatters_cache(cd.locale)); } - tmp=std::locale(tmp, new icu_numpunct(cd.locale)); + tmp=std::locale(tmp, new icu_numpunct(cd)); return tmp; }