编码转换支持库Ex3.0

易语言 2023-01-31 17:26:04

编码转换支持库Ex3.0

1、升级iconv库到最新的1.17,官方使用的为1.9.1版本
2、修改 编码转换() 参数<1>的名称为“被转换数据”,类型为“通用型(all)”。可以使用文本型和字节集型数据,其它数据类型会报错
3、修改 编码转换_转换() 参数<2>的名称为“被转换数据”,类型为“通用型(all)”。可以使用文本型和字节集型数据,其它数据类型会报错。
4、添加 编码转换Ex() 命令,在 编码转换() 的基础上返回通用型,由参数<4>的名称为“返回文本型”,类型为“逻辑型(bool)”,初始值为“假”。结果返回文本型,默认返回字节集型。确定返回类型。
5、添加 编码转换_转换Ex() 命令,在 编码转换_转换() 的基础上返回通用型,由参数<3>的名称为“返回文本型”,类型为“逻辑型(bool)”,初始值为“假”。结果返回文本型,默认返回字节集型。确定返回类型。
6、添加 编码转换_文件Ex() 命令,将指定的文件从一种编码转换为另一种编码,如果执行失败,将返回假,本命令相当于“编码转换_打开()”“编码转换_转换()”“编码转换_关闭()”三个命令的组合使用。
7、添加 iconv流 转换,其实就是使用原版API,可以参考例程里面的 流失文件编码转换() 命令的实现,里面用iconv 的API 完成了从文件流读取转换编码再写出的流程。其它回调流,类似 HPSOCKET 数据回调,也是一样的。只要把 iconv_open,iconv,iconv_close,这三个命令分开调用。
8、iconv流转换 用支持库原版命令也可以实现 iconv_open=编码转换_打开(),iconv=编码转换_转换/编码转换_转换Ex(),iconv_close=编码转换_关闭()

下面是原版库和改造库的性能对比:

VC6 官方版本的 WINAPI 就是 VC2017版本的自用,是我自己用的模块里面的命令。
iconv = 编码转换()
iconv 流式=编码转换_打开(),编码转换_转换/编码转换_转换Ex(),编码转换_关闭()
iconv API = 单独调用的 libiconv 库dll文件
iconv 支持库 API =iconv_open, iconv,iconv_close

正常的使用方式是例程里面的 流失文件编码转换() 命令的实现!!请合理使用该库,避免无谓的性能损失,我也在研究如何修改让其性能提升。