123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- program doiconv;
- {
- Copyright (c) 2008 by Marco van de Voort([email protected])
- member of the Free Pascal development team
- Test program for the iconvenc package.
- See the file COPYING.FPC, included in this distribution,
- for details about the copyright. (LGPL)
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- Seems not to have memory leaks atm. If you experience them, check procedure
- newcalc first.
- }
- {$mode objfpc}{$H+}
- uses
- SysUtils,
- iconvenc;
- // some random Hebrew string for testing in CP1255
- Const InputString : array[0..21] of char =
- (#$e0,#$e1,#$e2,#$e3,#$e4,#$e5,#$e6,#$e7,
- #$e8,#$e9,#$eb,#$ec,#$ee,#$f0,#$f1,#$f2,
- #$f4,#$f6,#$f7,#$f8,#$f9,#$fa);
- InputEncoding = 'CP1255';
-
- procedure DoOneConversion(TargetEncoding:string);
- var
- fn,res: string;
- f1:text;
- convres: integer;
- begin
- // note that while the iconvert function is easy, it opens and closes
- // a iconv handle each time, and also requires exceptions.
- // I do not know how costly this is.
- // also iconvert skips unknown chars (EILSEQ).
- convres:=Iconvert(inputstring,res,inputencoding,targetencoding);
- if convres=0 then
- begin
- fn:='result-'+targetencoding+'.txt';
- Writeln('Succes: writing file ',fn,' with results');
- assignfile(f1,fn);
- rewrite(f1);
- Write(f1,res);
- closefile(f1);
- end
- else
- Writeln('Failure for ',TargetEncoding,' error: ',convres);
- end;
- var s : string;
- begin
- {$IFDEF LOADDYNAMIC}
- if not InitIconv(s) then
- begin
- Writeln('Iconv initialization failed:',s);
- halt;
- end ;
- {$ENDIF}
- DoOneConversion('UTF-8');
- DoOneConversion('UTF-16');
- end.
|