步骤启用并在Windows上使用的iconv与印10.5.9(Steps to enable and

2019-08-05 10:47发布

对于跨平台开发与互联网直接(印),它可以使有用的iconv支持,而不是特定的Windows操作系统的字符转换。

这将允许继续开发和在Delphi IDE在Windows上测试代码,但是仍然可以编译在不同的平台的代码之前找到转换的相关事宜。

印10已经包括代码使用在Linux和Windows的API的iconv。

在Windows上,需要做一些准备工作:

  • 该API的iconv DLL复制到app文件夹或搜索路径
  • 定义use_iconv情况的符号

这个问题的目的是为了帮助入门与Windows平台上的iconv。

Answer 1:

如果我有一个快速浏览一下iconv.h我发现与gettext的窗户SourceForge项目 ,如果我理解正确的C代码,一个包装单元的iconv.dll看起来是这样的,并且在输入可用于和印组件的输出。

unit iconv;

interface

//based on version 1.9.1 https://sourceforge.net/projects/gettext/

type
  TIconv = pointer;

function iconv_open(const PAnsiChar:tocode; const PAnsiChar:fromcode): TIconv; cdecl;
function iconv(cd:TIconv; var inbuf:PAnsiChar; var inbytesleft:integer; var output:PAnsiChar; var outbytesleft:integer): integer; cdecl;
function iconv_close(cd:TIconv): integer; cdecl;

const
  ICONV_TRIVIALP            =0;  // int *argument
  ICONV_GET_TRANSLITERATE   =1;  // int *argument
  ICONV_SET_TRANSLITERATE   =2;  // const int *argument
  ICONV_GET_DISCARD_ILSEQ   =3;  // int *argument
  ICONV_SET_DISCARD_ILSEQ   =4;  // const int *argument

type
  TiconvlistDoOne=function(namescount:cardinal; const names:PAnsiChar; data:pointer): integer; cdecl;

function iconvctl(cd:TIconv; request:integer; argument:pointer): integer; cdecl;
procedure iconvlist(do_one:TiconvlistDoOne; data:pointer); cdecl;
procedure libiconv_set_relocation_prefix(const orig_prefix:PAnsiChar; const curr_prefix:PAnsiChar); cdecl;

implementation

function iconv_open; external 'iconv.dll';
function iconv; external 'iconv.dll';
function iconv_close; external 'iconv.dll';
function iconvctl; external 'iconv.dll';
procedure iconvlist; external 'iconv.dll';
procedure libiconv_set_relocation_prefix; external 'iconv.dll';

end.


Answer 2:

自由帕斯卡具有的iconv报头(封装iconvenc),并且要么是Delphi的兼容或应该是容易更新。 得到它FPC websvn接口模块iconvenc或最新的RC(2.6.2rc1),因为它可能已自岁的2.6.0更新。

但是它不仅仅是提供标题,因为在windows上的iconv不支持错误号,因此无法处理EILSEQ和EI2BIG更复杂,所以你需要正确地分配内存前面(如4 * charsize)。

我的代码如何处理非错误号的iconv目标PHP ,但尚未经过测试很好。 (见的src / iconvert.inc)



文章来源: Steps to enable and use iconv on Windows with Indy 10.5.9