12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Copyright (c) 2011 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef BASE_I18N_ICU_STRING_CONVERSIONS_H_
- #define BASE_I18N_ICU_STRING_CONVERSIONS_H_
- #include <string>
- #include "base/i18n/base_i18n_export.h"
- #include "base/i18n/i18n_constants.h"
- #include "base/strings/string16.h"
- #include "base/strings/string_piece.h"
- namespace base {
- // Defines the error handling modes of UTF16ToCodepage and CodepageToUTF16.
- class OnStringConversionError {
- public:
- enum Type {
- // The function will return failure. The output buffer will be empty.
- FAIL,
- // The offending characters are skipped and the conversion will proceed as
- // if they did not exist.
- SKIP,
- // When converting to Unicode, the offending byte sequences are substituted
- // by Unicode replacement character (U+FFFD). When converting from Unicode,
- // this is the same as SKIP.
- SUBSTITUTE,
- };
- private:
- OnStringConversionError() = delete;
- };
- // Converts between UTF-16 strings and the encoding specified. If the
- // encoding doesn't exist or the encoding fails (when on_error is FAIL),
- // returns false.
- BASE_I18N_EXPORT bool UTF16ToCodepage(base::StringPiece16 utf16,
- const char* codepage_name,
- OnStringConversionError::Type on_error,
- std::string* encoded);
- BASE_I18N_EXPORT bool CodepageToUTF16(base::StringPiece encoded,
- const char* codepage_name,
- OnStringConversionError::Type on_error,
- string16* utf16);
- // Converts from any codepage to UTF-8 and ensures the resulting UTF-8 is
- // normalized.
- BASE_I18N_EXPORT bool ConvertToUtf8AndNormalize(base::StringPiece text,
- const std::string& charset,
- std::string* result);
- } // namespace base
- #endif // BASE_I18N_ICU_STRING_CONVERSIONS_H_
|