70 lines
2.0 KiB
Plaintext
70 lines
2.0 KiB
Plaintext
|
unit IdHeaderCoderPlain;
|
||
|
|
||
|
interface
|
||
|
|
||
|
{$i IdCompilerDefines.inc}
|
||
|
|
||
|
uses
|
||
|
IdGlobal, IdHeaderCoderBase;
|
||
|
|
||
|
type
|
||
|
TIdHeaderCoderPlain = class(TIdHeaderCoder)
|
||
|
public
|
||
|
class function Decode(const ACharSet: string; const AData: TIdBytes): String; override;
|
||
|
class function Encode(const ACharSet, AData: String): TIdBytes; override;
|
||
|
class function CanHandle(const ACharSet: String): Boolean; override;
|
||
|
end;
|
||
|
|
||
|
// RLebeau 4/17/10: this forces C++Builder to link to this unit so
|
||
|
// RegisterHeaderCoder can be called correctly at program startup...
|
||
|
|
||
|
{$IFDEF HAS_DIRECTIVE_HPPEMIT_LINKUNIT}
|
||
|
{$HPPEMIT LINKUNIT}
|
||
|
{$ELSE}
|
||
|
{$HPPEMIT '#pragma link "IdHeaderCoderPlain"'}
|
||
|
{$ENDIF}
|
||
|
|
||
|
implementation
|
||
|
|
||
|
uses
|
||
|
SysUtils;
|
||
|
|
||
|
class function TIdHeaderCoderPlain.Decode(const ACharSet: string; const AData: TIdBytes): String;
|
||
|
begin
|
||
|
Result := BytesToStringRaw(AData);
|
||
|
end;
|
||
|
|
||
|
class function TIdHeaderCoderPlain.Encode(const ACharSet, AData: String): TIdBytes;
|
||
|
begin
|
||
|
Result := ToBytes(AData, IndyTextEncoding_8Bit{$IFDEF STRING_IS_ANSI}, IndyTextEncoding_8Bit{$ENDIF});
|
||
|
end;
|
||
|
|
||
|
class function TIdHeaderCoderPlain.CanHandle(const ACharSet: String): Boolean;
|
||
|
begin
|
||
|
Result := TextStartsWith(ACharSet, 'ISO'); {do not localize}
|
||
|
if Result then begin
|
||
|
// 'ISO-2022-JP' is handled by TIdHeaderCoder2022JP
|
||
|
Result := not TextIsSame(ACharSet, 'ISO-2022-JP'); {do not localize}
|
||
|
Exit;
|
||
|
end;
|
||
|
if not Result then begin
|
||
|
Result := TextStartsWith(ACharSet, 'WINDOWS'); {do not localize}
|
||
|
if not Result then begin
|
||
|
Result := TextStartsWith(ACharSet, 'KOI8'); {do not localize}
|
||
|
if not Result then begin
|
||
|
Result := TextStartsWith(ACharSet, 'GB2312'); {do not localize}
|
||
|
if not Result then begin
|
||
|
Result := TextIsSame(ACharSet, 'US-ASCII');
|
||
|
end;
|
||
|
end;
|
||
|
end;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
initialization
|
||
|
RegisterHeaderCoder(TIdHeaderCoderPlain);
|
||
|
finalization
|
||
|
UnregisterHeaderCoder(TIdHeaderCoderPlain);
|
||
|
|
||
|
end.
|