开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2588|回复: 5
打印 上一主题 下一主题
收起左侧

[易源码分享] 编码转换,封装的对象,可获得机器上可转换的编码

[复制链接]
头像被屏蔽
结帖率:88% (106/121)
跳转到指定楼层
楼主
发表于 2014-1-15 18:23:20 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式   广东省湛江市
分享源码
界面截图:
是否带模块: -
备注说明: -
版本 2
.支持库 EThread
.程序集 程序集1
.子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
许可证 = 创建进入许可证 ()
_临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
返回 (0)  ' 可以根据您的需要返回任意数值
.子程序 _临时子程序
.局部变量 数据, 字节集
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
.子程序 扫描可用编码, , , 返回可以转换的编码列表
.参数 可转换编码, 可转换编码, 参考 数组
.局部变量 循环1, 整数型
进入许可区 (许可证)
重定义数组 (编码表, 假, 0)
子程序起始 ()
重定义数组 (可转换编码, 假, 取数组成员数 (编码表))
.计次循环首 (取数组成员数 (可转换编码), 循环1)
    可转换编码 [循环1].编码名称 = 编码表 [循环1]
    可转换编码 [循环1].引用编码名称 = 取文本注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].编码名称 + “\AliasForCharset”, “”)
    .如果真 (可转换编码 [循环1].引用编码名称 = “”)
        可转换编码 [循环1].页面值 = 取数值注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].编码名称 + “\Codepage”, 0)
        可转换编码 [循环1].网络编码页面值 = 取数值注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].编码名称 + “\InternetEncoding”, 0)
    .如果真结束
    .如果真 (可转换编码 [循环1].引用编码名称 ≠ “”)
        可转换编码 [循环1].页面值 = 取数值注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].引用编码名称 + “\Codepage”, 0)
        可转换编码 [循环1].网络编码页面值 = 取数值注册项 (#根类, “MIME\Database\Charset\” + 可转换编码 [循环1].引用编码名称 + “\InternetEncoding”, 0)
    .如果真结束
.计次循环尾 ()
退出许可区 (许可证)
.子程序 子程序起始
.局部变量 打开注册表项句柄, 整数型
.局部变量 项索引, 整数型
.局部变量 项索引1, 字节集
.局部变量 数据缓冲区, 字节集
.局部变量 缓冲区, 整数型
.局部变量 数据缓冲区长度, 整数型
.局部变量 UFFER_SIZE, 整数型
.局部变量 修改时间, 文件时间_
.局部变量 项类名, 字节集
.局部变量 项类名长度, 整数型
.局部变量 项目文本, 文本型, , , 项目位置
.局部变量 sy, 整数型
UFFER_SIZE = 255
缓冲区 = UFFER_SIZE
项类名长度 = UFFER_SIZE
打开注册表项句柄 = 0
.如果 (打开注册表项_ (#HKEY_CLASSES_ROOT, 到字节集 (“MIME\Database\Charset”) + { 0 }, 打开注册表项句柄) = 0)
    项索引1 = 取空白字节集 (UFFER_SIZE)
    项类名 = 取空白字节集 (UFFER_SIZE)
    项索引 = 0
    .判断循环首 (枚举注册项_ (打开注册表项句柄, 项索引, 项索引1, 缓冲区, 0, 项类名, 项类名长度, 修改时间) ≠ #ERROR_NO_MORE_ITEMS)
        项目文本 = 取字节集数据 (项索引1, #文本型, )
        加入成员 (编码表, 项目文本)
        sy = 取数组成员数 (编码表)
        项索引 = 项索引 + 1
        项索引1 = 取空白字节集 (UFFER_SIZE)
        缓冲区 = UFFER_SIZE
        子程序下级项目 (项目文本, sy)
    .判断循环尾 ()
    关闭注册表项_ (打开注册表项句柄)
.否则
    信息框 (“  Error while calling RegOpenKey”, 0, )
.如果结束

.子程序 子程序下级项目
.参数 文本参数, 文本型
.参数 索引数值, 整数型
.局部变量 打开注册表项句柄, 整数型
.局部变量 项索引, 整数型
.局部变量 项索引1, 字节集
.局部变量 数据缓冲区, 字节集
.局部变量 缓冲区, 整数型
.局部变量 数据缓冲区长度, 整数型
.局部变量 UFFER_SIZE, 整数型
.局部变量 修改时间, 文件时间_
.局部变量 项类名, 字节集
.局部变量 项类名长度, 整数型
.局部变量 项目文本, 文本型
.局部变量 sy, 整数型
.局部变量 n1, 整数型
UFFER_SIZE = 255
缓冲区 = UFFER_SIZE
项类名长度 = UFFER_SIZE
打开注册表项句柄 = 0
.如果真 (打开注册表项_ (#HKEY_CURRENT_USER, 到字节集 (文本参数) + { 0 }, 打开注册表项句柄) = 0)
    项索引1 = 取空白字节集 (UFFER_SIZE)
    项类名 = 取空白字节集 (UFFER_SIZE)
    项索引 = 0
    .判断循环首 (枚举注册项_ (打开注册表项句柄, 项索引, 项索引1, 缓冲区, 0, 项类名, 项类名长度, 修改时间) ≠ #ERROR_NO_MORE_ITEMS)
        项目文本 = 取字节集数据 (项索引1, #文本型, )
        加入成员 (编码表, 项目文本)
        项索引 = 项索引 + 1
        项索引1 = 取空白字节集 (UFFER_SIZE)
        缓冲区 = UFFER_SIZE
        子程序下级项目 (文本参数 + “\” + 项目文本, sy)
    .判断循环尾 ()
    .如果真 (枚举注册项_ (打开注册表项句柄, 项索引, 项索引1, 缓冲区, 0, 项类名, 项类名长度, 修改时间) = #ERROR_NO_MORE_ITEMS)
        .如果 (打开注册表项_ (#HKEY_CURRENT_USER, 到字节集 (文本参数) + { 0 }, 打开注册表项句柄) = 0)
            项索引1 = 取空白字节集 (UFFER_SIZE)
            数据缓冲区 = 取空白字节集 (UFFER_SIZE)
            缓冲区 = UFFER_SIZE
            数据缓冲区长度 = UFFER_SIZE
            .判断循环首 (枚举注册项值_ (打开注册表项句柄, 项索引, 项索引1, 缓冲区, 0, 0, 数据缓冲区, 数据缓冲区长度) ≠ #ERROR_NO_MORE_ITEMS)
                .如果真 (数据缓冲区长度 > 0)
                    加入成员 (编码表, 取字节集数据 (项索引1, #文本型, ))
                .如果真结束
                项索引 = 项索引 + 1
                项索引1 = 取空白字节集 (UFFER_SIZE)
                数据缓冲区 = 取空白字节集 (UFFER_SIZE)
                缓冲区 = UFFER_SIZE
                数据缓冲区长度 = UFFER_SIZE
            .判断循环尾 ()
            关闭注册表项_ (打开注册表项句柄)
        .否则
            信息框 (“  Error while calling RegOpenKey”, 0, )
        .如果结束
    .如果真结束
.如果真结束

.子程序 编码转换_GB2312扩展, 字节集, 公开
.参数 数据流, 字节集
.参数 转换前编码, 文本型
.参数 转换后编码, 文本型
.局部变量 转前对象, 对象
.局部变量 转前变体型, 变体型
.局部变量 转GB2312, 文本型
.局部变量 转后对象, 对象
.局部变量 转后变体型, 变体型
.局部变量 字节集, 字节集
' 使用本子程序前,一定要确认,您转换的编码是本机器支持的编码
' 想知道本机器都支持什么编码,可以使用  扫描可用编码 程序扫描一下
转前变体型.赋值 (数据流, )  ' 将数据流赋值给变体
转前对象.创建 (“adodb.stream”, )  ' 创建转前数据流处理对象
转前对象.写属性 (“Type”, 1)  ' Type是执行类型,现在Type=1,表示我们要处理或读写二进制数据
转前对象.写属性 (“Mode”, 3)  ' Mode是返回模式
转前对象.方法 (“Open”, )  ' 打开对象
' Type和Mode被锁定,不可以更改
转前对象.方法 (“Write”, 转前变体型)  ' 写入二进制数据流
转前对象.写属性 (“Position”, 0)  ' Position数据返回指针,写上了0就代表关闭了数据返回通道
' 这时Type和Mode解锁,并且预处理数据
转前对象.写属性 (“Type”, 2)  ' Type执行类型,现在Type=2,表示我们要处理或读写字符流
转前对象.写属性 (“Charset”, 转换前编码)  ' 提供从什么编码转换成字符流(即GB2312)

转GB2312 = 转前对象.文本方法 (“ReadText”, )  ' 读出字符流
转前对象.方法 (“Close”, )

转后对象.创建 (“adodb.stream”, )  ' 创建转后数据流处理对象
转后对象.写属性 (“Charset”, 转换后编码)  ' 提供从字符流(GB2312)转换成什么编码
转后对象.写属性 (“Type”, 2)  ' Type执行类型,现在Type=2,表示我们要处理或读写字符流
转后对象.写属性 (“Mode”, 3)  ' Mode是返回模式
转后对象.方法 (“Open”, )  ' 打开对象
' 这时Type和Mode是锁定状态,不可以更改数据
转后对象.方法 (“WriteText”, 转GB2312)
转后对象.写属性 (“Position”, 0)  ' Position表示数据指针,如果填写0表示关闭返回通道
' 这时Type和Mode被解锁
转后对象.写属性 (“Type”, 1)  ' Type执行类型,现在Type=1,表示我们要处理或读写数据流
转后变体型 = 转后对象.通用方法 (“Read”, )  ' 读出数据流
字节集 = 转后变体型.取字节集 ()
转后对象.方法 (“Close”, )
返回 (字节集)
bm.zip (4.74 KB, 下载次数: 25) .

评分

参与人数 1精币 +2 收起 理由
无\月 + 2 感谢你的支持,精易有你更精彩

查看全部评分


结帖率:37% (7/19)
6
发表于 2014-1-23 19:46:10 | 只看该作者   北京市北京市
附件多好      
回复 支持 反对

使用道具 举报

签到天数: 3 天

地下
发表于 2014-1-16 19:43:51 高大上手机用户 | 只看该作者   安徽省合肥市
好东西好多代码辛苦了,楼主聪明呀,写这么多复杂的代码。
回复 支持 反对

使用道具 举报

地板
发表于 2014-1-15 21:34:23 | 只看该作者   广东省广州市
谢谢分享。
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)
板凳
发表于 2014-1-15 19:02:31 | 只看该作者   广东省深圳市
支持!
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:89% (8/9)
沙发
发表于 2014-1-15 18:25:41 | 只看该作者   广东省阳江市
沙发一个
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表