TEncoding
[Properties (by Name)][Methods (by Name)][Events (by Name)]
Encoding support
Declaration
Source position: sysencodingh.inc line 21
Type
TEncoding = class
strict private
TStandardEncoding = (seAnsi,seAscii,seUnicode,seBigEndianUnicode,seUTF7,
seUTF8);
FStandardEncodings : Array[TStandardEncoding] of TEncoding;
FSystemEncodings : Array of TEncoding;
FLock : TRTLCriticalSection;
class function GetANSI : TEncoding; Static;
class function GetASCII : TEncoding; Static;
class function GetBigEndianUnicode : TEncoding; Static;
class function GetDefault : TEncoding; Static;
class function GetSystemEncoding : TEncoding; Static;
class function GetUnicode : TEncoding; Static;
class function GetUTF7 : TEncoding; Static;
class function GetUTF8 : TEncoding; Static;
class constructor Create;
destructor Destroy;
strict protected
FIsSingleByte : Boolean;
FMaxCharSize : Integer;
class procedure FreeEncodings;
function GetByteCount(Chars: PUnicodeChar; CharCount: Integer) : Integer
; Virtual; Abstract; Overload;
function GetByteCount(const Chars: TUnicodeCharArray) : Integer
; Overload;
function GetByteCount(const Chars: TUnicodeCharArray;
CharIndex: Integer; CharCount: Integer) : Integer
; Overload;
function GetByteCount(const S: UnicodeString) : Integer; Overload;
function GetByteCount(const S: UnicodeString; CharIndex: Integer;
CharCount: Integer) : Integer; Overload;
function GetBytes(Chars: PUnicodeChar; CharCount: Integer;
Bytes: PByte; ByteCount: Integer) : Integer; Virtual
; Abstract; Overload;
function GetBytes(const Chars: TUnicodeCharArray) : TBytes; Overload;
function GetBytes(const Chars: TUnicodeCharArray; CharIndex: Integer;
CharCount: Integer) : TBytes; Overload;
function GetBytes(const Chars: TUnicodeCharArray; CharIndex: Integer;
CharCount: Integer; const Bytes: TBytes;
ByteIndex: Integer) : Integer; Overload;
function GetBytes(const S: UnicodeString) : TBytes; Overload;
function GetBytes(const S: UnicodeString; CharIndex: Integer;
CharCount: Integer; const Bytes: TBytes;
ByteIndex: Integer) : Integer; Overload;
function GetCharCount(Bytes: PByte; ByteCount: Integer) : Integer
; Virtual; Abstract; Overload;
function GetCharCount(const Bytes: TBytes) : Integer; Overload;
function GetCharCount(const Bytes: TBytes; ByteIndex: Integer;
ByteCount: Integer) : Integer; Overload;
function GetChars(Bytes: PByte; ByteCount: Integer;
Chars: PUnicodeChar; CharCount: Integer) : Integer
; Virtual; Abstract; Overload;
function GetChars(const Bytes: TBytes) : TUnicodeCharArray; Overload;
function GetChars(const Bytes: TBytes; ByteIndex: Integer;
ByteCount: Integer) : TUnicodeCharArray; Overload;
function GetChars(const Bytes: TBytes; ByteIndex: Integer;
ByteCount: Integer; const Chars: TUnicodeCharArray;
CharIndex: Integer) : Integer; Overload;
function GetAnsiBytes(Chars: PChar; CharCount: Integer) : TBytes
; Virtual; Abstract;
function GetAnsiBytes(const S: string) : TBytes; Overload;
function GetAnsiBytes(const S: string; CharIndex: Integer;
CharCount: Integer) : TBytes; Overload;
function GetAnsiString(Bytes: PByte; ByteCount: Integer) : string
; Virtual; Abstract;
function GetAnsiString(const Bytes: TBytes) : string; Overload;
function GetAnsiString(const Bytes: TBytes; ByteIndex: Integer;
ByteCount: Integer) : string; Overload;
function GetCodePage : Cardinal; Virtual; Abstract;
function GetEncodingName : UnicodeString; Virtual; Abstract;
public
function Clone : TEncoding; Virtual;
class function Convert(Source: TEncoding; Destination: TEncoding;
const Bytes: TBytes) : TBytes; Overload;
class function Convert(Source: TEncoding; Destination: TEncoding;
const Bytes: TBytes; StartIndex: Integer;
Count: Integer) : TBytes; Overload;
class function IsStandardEncoding(AEncoding: TEncoding) : Boolean
; Static;
class function GetBufferEncoding(const Buffer: TBytes;
var AEncoding: TEncoding) : Integer
; Overload; Static;
class function GetBufferEncoding(const Buffer: TBytes;
var AEncoding: TEncoding;
ADefaultEncoding: TEncoding) : Integer
; Overload; Static;
class function GetEncoding(CodePage: Integer) : TEncoding; Overload
; Static;
class function GetEncoding(const EncodingName: UnicodeString)
: TEncoding; Overload; Static;
function GetMaxByteCount(CharCount: Integer) : Integer; Virtual
; Abstract;
function GetMaxCharCount(ByteCount: Integer) : Integer; Virtual
; Abstract;
function GetPreamble : TBytes; Virtual; Abstract;
function GetString(const Bytes: TBytes) : UnicodeString; Overload;
function GetString(const Bytes: TBytes; ByteIndex: Integer;
ByteCount: Integer) : UnicodeString; Overload;
CodePage : Cardinal;
EncodingName : UnicodeString;
IsSingleByte : Boolean;
ANSI : TEncoding;
ASCII : TEncoding;
BigEndianUnicode : TEncoding;
Default : TEncoding;
SystemEncoding : TEncoding;
Unicode : TEncoding;
UTF7 : TEncoding;
UTF8 : TEncoding;
end
;
Description
TEncoding is a mostly abstract class that contains various methods to deal with different encodings in single- and double-byte strings. In practice, one instance of a descendent of this class for each needed encoding can be instantiated and used. The class contains several class methods and properties to create such instances, and has several often-used instances available as class properties, in particular the default encoding.
When using encodings (and in particular TEncoding.Default or TEncoding.ANSI ), if the DefaultSystemCodePage changes, you should call TEncoding.FreeEncodings]() to regenerate the encodings.
Members
| Member | Type | Visibility | Description |
|---|---|---|---|
| ANSI | Property | public | Ansi encoding instance |
| ASCII | Property | public | ASCII encoding instance |
| BigEndianUnicode | Property | public | Big-endian Unicode (UTF16BE) encoding instance |
| Clone | Method | public | Clone a TEncoding instance |
| CodePage | Property | public | Codepage for this encoding |
| Convert | Method | public | Convert an array of bytes from one encoding to another |
| Create | Method | strict private | |
| Default | Property | public | Default codepage |
| Destroy | Method | strict private | |
| EncodingName | Property | public | Name of this encoding |
| FIsSingleByte | Field | strict protected | |
| FLock | Field | strict private | |
| FMaxCharSize | Field | strict protected | |
| FreeEncodings | Method | strict protected | Free all standard encodings |
| FStandardEncodings | Field | strict private | |
| FSystemEncodings | Field | strict private | |
| GetANSI | Method | strict private | |
| GetAnsiBytes | Method | strict protected | |
| GetAnsiString | Method | strict protected | |
| GetASCII | Method | strict private | |
| GetBigEndianUnicode | Method | strict private | |
| GetBufferEncoding | Method | public | Attempt to guess the encoding of a buffer |
| GetByteCount | Method | strict protected | |
| GetBytes | Method | strict protected | |
| GetCharCount | Method | strict protected | |
| GetChars | Method | strict protected | |
| GetCodePage | Method | strict protected | |
| GetDefault | Method | strict private | |
| GetEncoding | Method | public | Get an encoding instance for a given codepage. |
| GetEncodingName | Method | strict protected | |
| GetMaxByteCount | Method | public | Returns the maximum number of bytes needed to represent a string |
| GetMaxCharCount | Method | public | Return the maximum number of characters that can be represented in a number of bytes |
| GetPreamble | Method | public | Return the BOM Marker used by the encoding |
| GetString | Method | public | Return a string based on an array of bytes |
| GetSystemEncoding | Method | strict private | |
| GetUnicode | Method | strict private | |
| GetUTF7 | Method | strict private | |
| GetUTF8 | Method | strict private | |
| IsSingleByte | Property | public | Is the encoding a single-byte encoding or not ? |
| IsStandardEncoding | Method | public | Check if the encoding is one of the standard encodings |
| SystemEncoding | Property | public | |
| TStandardEncoding | Type | strict private | |
| Unicode | Property | public | UTF16 encoding instance |
| UTF7 | Property | public | UTF7 encoding instance |
| UTF8 | Property | public | UTF8 encoding instance |
Inheritance
| Class | Description |
|---|---|
| TEncoding | Encoding support |
See also
| Name | Description |
|---|---|
| Cardinal | An unsigned 32-bits integer. |
| Integer | A signed 16-bits integer |
| TEncoding.ANSI | Ansi encoding instance |
| TEncoding.ASCII | ASCII encoding instance |
| TEncoding.BigEndianUnicode | Big-endian Unicode (UTF16BE) encoding instance |
| TEncoding.Default | Default codepage |
| TEncoding.Unicode | UTF16 encoding instance |
| TEncoding.UTF7 | UTF7 encoding instance |
| TEncoding.UTF8 | UTF8 encoding instance |
| TRTLCriticalSection | A critical section. |
| UnicodeString | A string consisting of widechars. |