diff --git a/base/base_tests/string_utils_test.cpp b/base/base_tests/string_utils_test.cpp index 9761630949..fbd72d5879 100644 --- a/base/base_tests/string_utils_test.cpp +++ b/base/base_tests/string_utils_test.cpp @@ -345,3 +345,10 @@ UNIT_TEST(UniString_Less) strings::UniString s7 = strings::MakeUniString("Tiste"); TEST(s0 < s7, ()); } + +UNIT_TEST(UniStringToUtf8) +{ + char const utf8Text[] = "У нас исходники хранятся в Utf8!"; + strings::UniString uniS = strings::MakeUniString(utf8Text); + TEST_EQUAL(string(utf8Text), strings::ToUtf8(uniS), ()); +} diff --git a/base/string_utils.hpp b/base/string_utils.hpp index 60a53f6aa6..fd6b26551b 100644 --- a/base/string_utils.hpp +++ b/base/string_utils.hpp @@ -31,6 +31,13 @@ inline UniString MakeUniString(string const & utf8s) return result; } +inline string ToUtf8(UniString const & s) +{ + string result; + utf8::unchecked::utf32to8(s.begin(), s.end(), back_inserter(result)); + return result; +} + template class TokenizeIterator {