unit synex_charset; {$mode delphi} {$codepage UTF8} interface uses Classes, SysUtils, lconvencoding; type TTextCharset = ( tcUnknown, tcUTF8, tcUTF8BOM, tcISO_8859_1, tcISO_8859_2, tcCP1250, tcCP1251, tcCP1252, tcCP1253, tcCP1254, tcCP1255, tcCP1256, tcCP1257, tcCP1258, tcCP437, tcCP850, tcCP852, tcCP866, tcCP874, tcKOI8, tcUCS2LE, tcUCS2BE, tcCP936, tcCP950, tcCP949, tcCP932 ); {stdcalls} function GetTextCharset (const AText: String): TTextCharset; STDCALL; function ConvertToUtf8 (const AText: String; const AEncoding: TTextCharset): String; STDCALL; function ConvertFromUtf8 (const AText: String; const AEncoding: TTextCharset): String; STDCALL; implementation function GetTextCharset (const AText: String): TTextCharset; var cur_charst: String; begin Result:= tcUnknown; cur_charst:= lowerCase(GuessEncoding(AText)); if cur_charst = 'utf8' then Result:= tcUTF8; if cur_charst = 'utf8bom' then Result:= tcUTF8BOM; if cur_charst = 'iso_8859_1' then Result:= tcISO_8859_1; if cur_charst = 'iso_8859_2' then Result:= tcISO_8859_2; if cur_charst = 'cp1250' then Result:= tcCP1250; if cur_charst = 'cp1251' then Result:= tcCP1251; if cur_charst = 'cp1252' then Result:= tcCP1252; if cur_charst = 'cp1253' then Result:= tcCP1253; if cur_charst = 'cp1254' then Result:= tcCP1254; if cur_charst = 'cp1255' then Result:= tcCP1255; if cur_charst = 'cp1256' then Result:= tcCP1256; if cur_charst = 'cp1257' then Result:= tcCP1257; if cur_charst = 'cp1258' then Result:= tcCP1258; if cur_charst = 'cp437' then Result:= tcCP437; if cur_charst = 'cp850' then Result:= tcCP850; if cur_charst = 'cp852' then Result:= tcCP852; if cur_charst = 'cp866' then Result:= tcCP866; if cur_charst = 'cp874' then Result:= tcCP874; if cur_charst = 'koi8' then Result:= tcKOI8; if cur_charst = 'ucs2le' then Result:= tcUCS2LE; if cur_charst = 'ucs2be' then Result:= tcUCS2BE; if cur_charst = 'cp936' then Result:= tcCP936; if cur_charst = 'cp950' then Result:= tcCP950; if cur_charst = 'cp949' then Result:= tcCP949; if cur_charst = 'cp932' then Result:= tcCP932; end; function ConvertToUtf8 (const AText: String; const AEncoding: TTextCharset): String; begin case AEncoding of tcUTF8BOM: Result:= UTF8BOMToUTF8(AText); tcISO_8859_1: Result:= ISO_8859_1ToUTF8(AText); tcISO_8859_2: Result:= ISO_8859_2ToUTF8(AText); tcCP1250: Result:= CP1250ToUTF8(AText); tcCP1251: Result:= CP1251ToUTF8(AText); tcCP1252: Result:= CP1252ToUTF8(AText); tcCP1253: Result:= CP1253ToUTF8(AText); tcCP1254: Result:= CP1254ToUTF8(AText); tcCP1255: Result:= CP1255ToUTF8(AText); tcCP1256: Result:= CP1256ToUTF8(AText); tcCP1257: Result:= CP1257ToUTF8(AText); tcCP1258: Result:= CP1258ToUTF8(AText); tcCP437: Result:= CP437ToUTF8(AText); tcCP850: Result:= CP850ToUTF8(AText); tcCP852: Result:= CP852ToUTF8(AText); tcCP866: Result:= CP866ToUTF8(AText); tcCP874: Result:= CP874ToUTF8(AText); tcKOI8: Result:= KOI8ToUTF8(AText); tcUCS2LE: Result:= UCS2LEToUTF8(AText); tcUCS2BE: Result:= UCS2BEToUTF8(AText); tcCP936: Result:= CP936ToUTF8(AText); tcCP950: Result:= CP950ToUTF8(AText); tcCP949: Result:= CP949ToUTF8(AText); tcCP932: Result:= CP932ToUTF8(AText); else Result:= AText; end; end; function ConvertFromUtf8 (const AText: String; const AEncoding: TTextCharset): String; begin case AEncoding of tcUTF8BOM: Result:= UTF8ToUTF8BOM(AText); tcISO_8859_1: Result:= UTF8ToISO_8859_1(AText); tcISO_8859_2: Result:= UTF8ToISO_8859_2(AText); tcCP1250: Result:= UTF8ToCP1250(AText); tcCP1251: Result:= UTF8ToCP1251(AText); tcCP1252: Result:= UTF8ToCP1252(AText); tcCP1253: Result:= UTF8ToCP1253(AText); tcCP1254: Result:= UTF8ToCP1254(AText); tcCP1255: Result:= UTF8ToCP1255(AText); tcCP1256: Result:= UTF8ToCP1256(AText); tcCP1257: Result:= UTF8ToCP1257(AText); tcCP1258: Result:= UTF8ToCP1258(AText); tcCP437: Result:= UTF8ToCP437(AText); tcCP850: Result:= UTF8ToCP850(AText); tcCP852: Result:= UTF8ToCP852(AText); tcCP866: Result:= UTF8ToCP866(AText); tcCP874: Result:= UTF8ToCP874(AText); tcKOI8: Result:= UTF8ToKOI8(AText); tcUCS2LE: Result:= UTF8ToUCS2LE(AText); tcUCS2BE: Result:= UTF8ToUCS2BE(AText); tcCP936: Result:= UTF8ToCP936(AText); tcCP950: Result:= UTF8ToCP950(AText); tcCP949: Result:= UTF8ToCP949(AText); tcCP932: Result:= UTF8ToCP932(AText); else Result:= AText; end; end; end.