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