1*6777b538SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef NET_BASE_NET_STRING_UTIL_H__ 6*6777b538SAndroid Build Coastguard Worker #define NET_BASE_NET_STRING_UTIL_H__ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <string> 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker #include "base/strings/string_piece.h" 11*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h" 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Worker // String conversion functions. By default, they're implemented with ICU, but 14*6777b538SAndroid Build Coastguard Worker // when building with USE_ICU_ALTERNATIVES, they use platform functions instead. 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker namespace net { 17*6777b538SAndroid Build Coastguard Worker 18*6777b538SAndroid Build Coastguard Worker extern const char* const kCharsetLatin1; 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Worker // Converts |text| using |charset| to UTF-8, and writes it to |output|. 21*6777b538SAndroid Build Coastguard Worker // On failure, returns false and |output| is cleared. 22*6777b538SAndroid Build Coastguard Worker bool ConvertToUtf8(std::string_view text, 23*6777b538SAndroid Build Coastguard Worker const char* charset, 24*6777b538SAndroid Build Coastguard Worker std::string* output); 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker // Converts |text| using |charset| to UTF-8, normalizes the result, and writes 27*6777b538SAndroid Build Coastguard Worker // it to |output|. On failure, returns false and |output| is cleared. 28*6777b538SAndroid Build Coastguard Worker bool ConvertToUtf8AndNormalize(std::string_view text, 29*6777b538SAndroid Build Coastguard Worker const char* charset, 30*6777b538SAndroid Build Coastguard Worker std::string* output); 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Worker // Converts |text| using |charset| to UTF-16, and writes it to |output|. 33*6777b538SAndroid Build Coastguard Worker // On failure, returns false and |output| is cleared. 34*6777b538SAndroid Build Coastguard Worker bool ConvertToUTF16(std::string_view text, 35*6777b538SAndroid Build Coastguard Worker const char* charset, 36*6777b538SAndroid Build Coastguard Worker std::u16string* output); 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker // Converts |text| using |charset| to UTF-16, and writes it to |output|. 39*6777b538SAndroid Build Coastguard Worker // Any characters that can not be converted are replaced with U+FFFD. 40*6777b538SAndroid Build Coastguard Worker bool ConvertToUTF16WithSubstitutions(std::string_view text, 41*6777b538SAndroid Build Coastguard Worker const char* charset, 42*6777b538SAndroid Build Coastguard Worker std::u16string* output); 43*6777b538SAndroid Build Coastguard Worker 44*6777b538SAndroid Build Coastguard Worker // Converts |str| to uppercase using the default locale, and writes it to 45*6777b538SAndroid Build Coastguard Worker // |output|. On failure returns false and |output| is cleared. 46*6777b538SAndroid Build Coastguard Worker NET_EXPORT_PRIVATE bool ToUpper(std::u16string_view str, 47*6777b538SAndroid Build Coastguard Worker std::u16string* output); 48*6777b538SAndroid Build Coastguard Worker 49*6777b538SAndroid Build Coastguard Worker } // namespace net 50*6777b538SAndroid Build Coastguard Worker 51*6777b538SAndroid Build Coastguard Worker #endif // NET_BASE_NET_STRING_UTIL_H__ 52