#include <ACEXML/common/Encoding.h>
Public Types | |
| UCS4BE | |
| UCS4LE | |
| UCS4_2143 | |
| UCS4_3412 | |
| UTF16BE | |
| UTF16LE | |
| UTF8 | |
| OTHER | |
| enum | { UCS4BE, UCS4LE, UCS4_2143, UCS4_3412, UTF16BE, UTF16LE, UTF8, OTHER } |
Static Public Member Functions | |
| static const ACEXML_Char * | get_encoding (const char *input) |
Public Attributes | |
| enum ACEXML_Encoding:: { ... } | ENCODING |
Static Public Attributes | |
| static const ACEXML_Char * | encoding_names_ [8] |
| static const ACEXML_UTF8 | byte_order_mark_ [][4] |
| static const ACEXML_UTF8 | magic_values_ [][4] |
Wrapper class for determining the encoding of a file or a byte stream.
Definition at line 35 of file Encoding.h.
| anonymous enum |
| const ACEXML_Char * ACEXML_Encoding::get_encoding | ( | const char * | input | ) | [static] |
Definition at line 38 of file Encoding.cpp.
References byte_order_mark_, encoding_names_, magic_values_, ACE_OS::memcmp(), UTF16BE, UTF16LE, and UTF8.
Referenced by ACEXML_StrCharStream::determine_encoding(), ACEXML_HttpCharStream::determine_encoding(), and ACEXML_FileCharStream::determine_encoding().
00039 { 00040 if ((ACE_OS::memcmp (&ACEXML_Encoding::byte_order_mark_[ACEXML_Encoding::UTF16BE][0], input, 2) == 0) 00041 && (input[2] != 0 || input[3] != 0)) // 3 & 4 should not be both zero 00042 return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF16BE]; 00043 else if ((ACE_OS::memcmp (&ACEXML_Encoding::byte_order_mark_[ACEXML_Encoding::UTF16LE][0], input, 2) == 0) 00044 && (input[2] != 0 || input[3] != 0)) // 3 & 4 should not be both zero 00045 return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF16LE]; 00046 else if (ACE_OS::memcmp (&ACEXML_Encoding::byte_order_mark_[ACEXML_Encoding::UTF8][0], input, 3) == 0) 00047 return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF8]; 00048 else if (ACE_OS::memcmp (&ACEXML_Encoding::magic_values_[ACEXML_Encoding::UTF16BE][0], input, 4) == 0) 00049 return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF16BE]; 00050 else if (ACE_OS::memcmp (&ACEXML_Encoding::magic_values_[ACEXML_Encoding::UTF16LE][0], input, 4) == 0) 00051 return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF16LE]; 00052 else if (ACE_OS::memcmp (&ACEXML_Encoding::magic_values_[ACEXML_Encoding::UTF8][0], input, 4) == 0) 00053 return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF8]; 00054 else 00055 { 00056 // ACE_ERROR ((LM_ERROR, "Unknown encoding. Assuming UTF-8\n")); 00057 return ACEXML_Encoding::encoding_names_[ACEXML_Encoding::UTF8]; 00058 } 00059 }
const ACEXML_UTF8 ACEXML_Encoding::byte_order_mark_ [static] |
Initial value:
{
{ '\x00', '\x00', '\xFE', '\xFF' },
{ '\xFF', '\xFE', '\x00', '\x00' },
{ '\x00', '\x00', '\xFF', '\xFE' },
{ '\xFE', '\xFF', '\x00', '\x00' },
{ '\xFE', '\xFF', '\xFF', '\xFF' },
{ '\xFF', '\xFE', '\xFF', '\xFF' },
{ '\xEF', '\xBB', '\xBF', '\xFF' }
}
Definition at line 51 of file Encoding.h.
Referenced by get_encoding().
| enum { ... } ACEXML_Encoding::ENCODING |
const ACEXML_Char * ACEXML_Encoding::encoding_names_ [static] |
Initial value:
{
ACE_TEXT ("UCS-4BE"),
ACE_TEXT ("UCS-4LE"),
ACE_TEXT ("UCS-4_2143"),
ACE_TEXT ("UCS-4_3412"),
ACE_TEXT ("UTF-16"),
ACE_TEXT ("UTF-16"),
ACE_TEXT ("UTF-8"),
}
Definition at line 49 of file Encoding.h.
Referenced by get_encoding().
const ACEXML_UTF8 ACEXML_Encoding::magic_values_ [static] |
Initial value:
{
{ '\x00', '\x00', '\x00', '\x3c' },
{ '\x3c', '\x00', '\x00', '\x00' },
{ '\x00', '\x00', '\x3c', '\x00' },
{ '\x00', '\x3c', '\x00', '\x00' },
{ '\x00', '\x3c', '\x00', '\x3f' },
{ '\x3c', '\x00', '\x3f', '\x00' },
{ '\x3c', '\x3f', '\x78', '\x6d' },
}
Definition at line 53 of file Encoding.h.
Referenced by get_encoding().
1.4.7