易语言http基础支持

.版本 2
.支持库 iconv

.程序集 url, , 公开

.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用



.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用



.子程序 编码, 文本型, 公开, 直接编码,没有字符集转换
.参数 URL, 文本型
.局部变量 tmp1, 字节集
.局部变量 tmp2, 字节集
.局部变量 待返回数据, 文本型
.局部变量 tmp3, 字节型
.局部变量 tmp4, 整数型

tmp2 = 到字节集 (URL)
tmp1 = 到字节集 (“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-_.~! * ‘ ( ) ; : @ & = + $ , / ? # [ ]”)
tmp4 = 1
.判断循环首 (tmp4 ≠ -1)
tmp3 = 取字节集数据 (tmp2, #字节型, tmp4)
.判断开始 (寻找字节集 (tmp1, 到字节集 (tmp3), ) ≠ -1)
待返回数据 = 待返回数据 + 字符 (tmp3)
.默认
待返回数据 = 待返回数据 + “%” + 取十六进制文本 (tmp3)
.判断结束

.判断循环尾 ()
返回 (待返回数据)


.子程序 解码, 文本型, 公开
.参数 URL, 文本型
.局部变量 循环变量, 整数型
.局部变量 文本长度, 整数型
.局部变量 十六进制文本, 文本型
.局部变量 返回文本, 文本型
.局部变量 高位, 整数型
.局部变量 低位, 整数型

文本长度 = 取文本长度 (URL)
循环变量 = 1
十六进制文本 = “0123456789ABCDEF”
.判断循环首 (循环变量 ≤ 文本长度)
.判断开始 (取文本中间 (URL, 循环变量, 1) ≠ “%”)
返回文本 = 返回文本 + 取文本中间 (URL, 循环变量, 1)
.默认
循环变量 = 循环变量 + 1
高位 = 寻找文本 (十六进制文本, 到大写 (取文本中间 (URL, 循环变量, 1)), , 假) - 1
循环变量 = 循环变量 + 1
低位 = 寻找文本 (十六进制文本, 到大写 (取文本中间 (URL, 循环变量, 1)), , 假) - 1
返回文本 = 返回文本 + 字符 (高位 × 16 + 低位)
.判断结束
循环变量 = 循环变量 + 1
.判断循环尾 ()
返回 (返回文本)

.子程序 编码_带编码, 文本型, 公开, 带编码方式的编码
.参数 URL, 文本型
.参数 编码方式, 文本型
.局部变量 tmp, 字节集

' 中间体 = 到字节集 (URL)
' 中间体 = 编码转换 (中间体, #编码_GB2312, 编码方式, )
tmp = 到字节集 (URL)
tmp = 编码转换 (tmp, #编码_GB2312, 编码方式, )
返回 (编码 (到文本 (tmp)))


.子程序 解码_带编码, 文本型, 公开, 带编码方式的解码
.参数 URL, 文本型
.参数 编码方式, 文本型
.局部变量 tmp, 文本型

' 中间体 = 到字节集 (URL)
' 中间体 = 编码转换 (中间体, 编码方式, #编码_GB2312, )

' tmp = 转换编码 (到字节集 (解码 (URL)), 编码方式)
.如果真 (编码方式

= #编码_UTF_8)
tmp = utf8到gbk (解码 (URL))
.如果真结束
' 如果真 ()
.如果真 (编码方式 = #编码_GB2312)
tmp = 解码 (URL)
.如果真结束
返回 (到文本 (tmp))


.子程序 utf8到anis, 文本型
.参数 文本型, 文本型

返回 (工具_编码转换 (文本型, #CP_UTF8, #CP_ANSI))

.子程序 GZIP压缩, 字节集, 公开
.参数 inData, 字节集
.局部变量 context, 整数型
.局部变量 inData2, 字节集
.局部变量 inLength, 整数型
.局部变量 buffer, 字节集
.局部变量 inUsed, 整数型
.局部变量 outUsed, 整数型
.局部变量 hResult, 整数型
.局部变量 retBytes, 字节集
.局部变量 upRetByts, 字节集
.局部变量 压缩位置, 整数型

buffer = 取空白字节集 (#MAX_BUF)
InitCompression ()
CreateCompression (context, #GZIP_LVL)
.循环判断首 ()
inData2 = 取字节集中间 (inData, 压缩位置 + 1, #MAX_BUF)
inLength = 取字节集长度 (inData2)
hResult = Compress (context, inData2, inLength, buffer, #MAX_BUF, inUsed, outUsed, #GZIP_LVL)
.如果真 (0 ≠ outUsed)
upRetByts = upRetByts + 取字节集左边 (buffer, outUsed)
压缩位置 = 压缩位置 + inUsed
.如果真结束

.循环判断尾 (hResult = 0)
DestroyCompression (context)
返回 (upRetByts)

.子程序 GZIP解压, 字节集, 公开
.参数 inData, 字节集
.局部变量 context, 整数型
.局部变量 inData2, 字节集
.局部变量 inLength, 整数型
.局部变量 buffer, 字节集
.局部变量 inUsed, 整数型
.局部变量 outUsed, 整数型
.局部变量 hResult, 整数型
.局部变量 retBytes, 字节集
.局部变量 upRetByts, 字节集
.局部变量 解压位置, 整数型

buffer = 取空白字节集 (#MAX_BUF)
InitDecompression ()
CreateDecompression (context, #GZIP_LVL)

.循环判断首 ()
inData2 = 取字节集中间 (inData, 解压位置 + 1, #MAX_BUF)
inLength = 取字节集长度 (inData2)
hResult = Decompress (context, inData2, inLength, buffer, #MAX_BUF, inUsed, outUsed)
.如果真 (0 ≠ outUsed)
upRetByts = upRetByts + 取字节集左边 (buffer, outUsed)
解压位置 = 解压位置 + inUsed
.如果真结束

.循环判断尾 (hResult = 0)
DestroyDecompression (context)
返回 (upRetByts)

.子程序 转换编码, 文本型, 公开
.参数 data, 字节集, 可空, 要转换的数据
.参数 Cset, 文本型, 可空, 转换前的编码
.局部变量 对象, 对象
.局部变量 变体型, 变体型
.局部变量 temp, 文本型

对象.创建 (“adodb.stream”, )
对象.写属性 (“Type”, 1)
对象.写属性 (“Mode”, 3)
对象.方法 (“Open”, )
变体型.赋值 (data, )
对象.方法 (“Write”, 变体型)
对象.写属性 (“Position”, 0)
对象.写属性 (“Type”, 2)
对象.写属性 (“Charset”, Cset)
temp = 对象.文本方法 (“Re

adText”, )
对象.方法 (“Close”, )
返回 (temp)

.子程序 gbk到utf8, 文本型
.参数 文本型, 文本型

返回 (工具_编码转换 (文本型, 936, 65001))


.子程序 utf8到gbk, 文本型
.参数 文本型, 文本型

返回 (工具_编码转换 (文本型, 65001, 936))

.子程序 工具_编码转换, 文本型, , 把 参数一中指定的文本 从 参数二中指定的编码 转换成 参数三中指定的编码
.参数 文本, 文本型, , 待转换的文本
.参数 源编码, 整数型, , 源编码,用#CP查找,也可直接输入整数
.参数 目标编码, 整数型, , 目标编码,用#CP查找,也可直接输入整数
.局部变量 Len, 整数型
.局部变量 r, 整数型
.局部变量 目标文本, 文本型
.局部变量 szUnicode, 文本型

Len = _取目标编码长度 (源编码, 0, 文本, -1, 0, 0) × 2
szUnicode = 取空白文本 (Len)
' 转换为 UNICODE
_字符编码 (源编码, 0, 文本, -1, szUnicode, Len)
Len = _编码转换 (目标编码, 0, szUnicode, -1, 0, 0, 0, 0)
目标文本 = 取空白文本 (Len)
' 转换为目标编码
_生成 (目标编码, 0, szUnicode, -1, 目标文本, Len, 0, 0)
返回 (目标文本)




.版本 2

.常量 MAX_BUF, "8192"
.常量 GZIP_LVL, "3"
.常量 编码_GB2312, "“GB2312”", 公开
.常量 编码_GBK, "“GBK”", 公开
.常量 编码_UTF_8, "“UTF-8”", 公开
.常量 编码_UTF_16, "“UTF-16”", 公开
.常量 编码_UTF_32, "“UTF-32”", 公开
.常量 编码_char, "“char”", 公开
.常量 CP_ANSI, "1252"
.常量 CP_GBK, "936"
.常量 CP_UTF8, "65001"
.常量 编码_wchar_t, "“wchar_t”", 公开



.版本 2

.DLL命令 _生成, 整数型, , "WideCharToMultiByte", , , WideCharToMultiByte
.参数 CodePage, 整数型, , CP_ACP CP_UTF8
.参数 dwFlags, 整数型
.参数 lpWideCharStr, 文本型
.参数 cchWideChar, 整数型
.参数 lpMultiByteStr, 文本型
.参数 cbMultiByte, 整数型
.参数 lpDefaultChar, 整数型
.参数 lpUsedDefaultChar, 整数型

.DLL命令 _字符编码, 整数型, , "MultiByteToWideChar", , , MultiByteToWideChar
.参数 CodePage, 整数型, , CP_ACP CP_UTF8
.参数 dwFlags, 整数型
.参数 lpWideCharStr, 文本型
.参数 cchWideChar, 整数型
.参数 lpMultiByteStr, 文本型
.参数 cbMultiByte, 整数型

.DLL命令 _编码转换, 整数型, , "WideCharToMultiByte", , , WideCharToMultiByte
.参数 CodePage, 整数型, , CP_ACP CP_UTF8
.参数 dwFlags, 整数型
.参数 lpWideCharStr, 文本型
.参数 cchWideChar, 整数型
.参数 lpMultiByteStr, 整数型
.参数 cbMultiByte, 整数型
.参数 lpDefaultChar, 整数型
.参数 lpUsedDefaultChar, 整数型

.DLL命令 _取目标编码长度, 整数型, , "MultiByteToWideChar", , , Multi

ByteToWideChar
.参数 CodePage, 整数型, , CP_ACP CP_UTF8
.参数 dwFlags, 整
数型
.参数 lpWideCharStr, 文本型
.参数 cchWideChar, 整数型
.参数 lpMultiByteStr, 整数型
.参数 cbMultiByte, 整数型

.DLL命令 InitDecompression, 整数型, "gzip.dll", "InitDecompression"

.DLL命令 InitCompression, 整数型, "gzip.dll", "InitCompression"

.DLL命令 CreateDecompression, 整数型, "gzip.dll", "CreateDecompression"
.参数 context, 整数型, 传址
.参数 flags, 整数型

.DLL命令 CreateCompression, 整数型, "gzip.dll", "CreateCompression"
.参数 context, 整数型, 传址
.参数 flags, 整数型

.DLL命令 ResetDecompression, 整数型, "gzip.dll", "ResetDecompression"
.参数 context, 整数型

.DLL命令 ResetCompression, 整数型, "gzip.dll", "ResetCompression"
.参数 ontext, 整数型

.DLL命令 DestroyDecompression, , "gzip.dll", "DestroyDecompression"
.参数 context, 整数型

.DLL命令 DeInitCompression, 整数型, "gzip.dll", "DeInitCompression"

.DLL命令 DeInitDecompression, 整数型, , "DeInitDecompression"
.参数 context, 整数型

.DLL命令 DestroyCompression, 整数型, "gzip.dll", "DestroyCompression"
.参数 context, 整数型

.DLL命令 Compress, 整数型, "gzip.dll", "Compress", , 压缩
.参数 context, 整数型
.参数 inBytes, 字节集
.参数 input_size, 整数型
.参数 outBytes, 字节集
.参数 output_size, 整数型
.参数 input_used, 整数型, 传址
.参数 output_used, 整数型, 传址
.参数 compressionLevel, 整数型

.DLL命令 Decompress, 整数型, "gzip.dll", "Decompress", , 解压
.参数 context, 整数型
.参数 inBytes, 字节集
.参数 input_size, 整数型
.参数 outBytes, 字节集
.参数 output_size, 整数型
.参数 input_used, 整数型, 传址
.参数 output_used, 整数型, 传址

.DLL命令 CopyMemory, , "kernel32", "RtlMoveMemory"
.参数 pDest, 整数型
.参数 pSrc, 整数型
.参数 ByteLen, 整数型


相关文档
最新文档