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. |