#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().