#include<iostream>
#include "iconv.h"
using namespace std;
typedef unsigned char byte;
class Convert {
private:
int code_convert(char *from_charset,char *to_charset,char *inbuf,int inlen,char *outbuf,int outlen){
iconv_t cd;
int rc;
char **pin = &inbuf;
char **pout = &outbuf;
cd = iconv_open(to_charset, from_charset);
if (cd==0) return -1;
memset(outbuf,0,outlen);
if (iconv(cd,pin,(size_t *)&inlen,pout,(size_t *)&outlen)==(size_t)-1) return -1;
iconv_close(cd);
return 0;
}
int hex2oct(char p) {
char hexData[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F' };
int size=sizeof(hexData)/sizeof(char);
for (int i = 0; i <size ; i++) {
if ( hexData[i] == p) {
return i;
}
}
return -1;
}
/***
*
* @param p1
* @param p2
* @param p3
* @param p4
* @param charset
* @return
*
*/
string hexString2String(char p1, char p2, char p3, char p4, string& charset,string& toCharset){
byte first = (byte) (hex2oct(p1) * 16 + hex2oct(p2));
byte second = ( byte) (hex2oct(p3) * 16 + hex2oct(p4));
byte bytes[3] ;
bytes[1] = first;
bytes[0] = second;
bytes[2]='\0';
char out_buffer[16];
char *from=const_cast<char*>(charset.c_str());
char *to=const_cast<char*>(toCharset.c_str());
size_t length=code_convert(from,to,(char*)bytes,3,out_buffer,16);
if(length<0){
cout<<"conver error \n";
}
string ret="";
ret=out_buffer;
return ret;
}
/**
* 组织专线开通
*
*
*/
public:
string doDecoder(string& html, string& charset,string& toCharset){
int size = html.size();
string result = "";
for (int i = 0; i < size; i++) {
char c = html.at(i);
if (c == '&') {
if ((i + 7) < size) {
if (html.at(i + 1) == '#' && ( html.at(i + 2) == 'X' || html.at(i + 2) == 'x')) {
char p1 = html.at(i + 3);
char p2 = html.at(i + 4);
char p3 = html.at(i + 5);
char p4 = html.at(i + 6);
string s = hexString2String(p1, p2, p3, p4, charset,toCharset);
result += s;
i += 7;
}
} else {
result += c;
continue;
}
} else {
result += c;
}
}
return result;
}
};
int main(int argv,char** argc) {
Convert c ;
string s="组织专线开&通";
string charset="utf-16";
string toCharset="GB2312";
string ret = c.doDecoder(s, charset ,toCharset);
cout<<ret.c_str()<<endl;
}
分享到:
相关推荐
### TXT格式转换成JAVA电子书的知识点解析 #### 一、TXT格式转换成JAVA电子书的基本流程 在本文档中,主要介绍了如何将常见的文本格式(TXT)转换为适用于Java平台的电子书(通常为JAR格式)。这种转换对于希望在...
2. **Cert2spc.exe**:将cer格式的证书转换为spc格式,即PKCS #7证书。 3. **Cabarc.exe**:将OCX打包成CAB文件。 4. **Signcode.exe**:使用证书对OCX文件进行签名。 5. **Chktrust.exe**:检查签名后的OCX是否正确...
命令格式为“regsvr32 OCX文件名”,如本例中的命令就是“regsvr32 IB_USBKEY.ocx”。 第四步,使用aximp.exe工具编译OCX文件。aximp.exe是.NET Framework SDK提供的工具,用于将COM组件转换成.NET兼容的DLL。在...
这里的`SedGetText`方法可能用于处理文本或数据的某种转换或操作,具体取决于OCX组件的设计。`lRet`变量用于接收方法的返回结果或状态码,`hr`变量则用于检查方法调用是否成功。 #### 释放资源 在使用完毕后,应当...
这个函数会返回一个IUnknown接口指针,我们可以将其强制转换为对应的接口类型,如IOleObject。 4. 初始化和显示控件:使用控件的接口方法初始化控件,并将其添加到界面上。例如,对于窗口控件,可以将其嵌入到...
【xv格式转换工具】是一种专门针对迅雷下载的.xv格式视频的转换软件,它旨在帮助用户将这种特殊格式的视频还原为原始格式,以便能够在各种常见的非迅雷播放器上进行播放,无需依赖迅雷看看软件进行在线观看。...
这涉及到图像处理技术,包括图像捕获和格式转换。 3. 录像:可以实现对视频流的录制,保存为文件供后期查看。这涉及到文件存储格式,如MP4或AVI,以及录制策略的设定,如定时录像、移动检测录像等。 4. 云台控制:...
"OCX转易模块工具2013版"是一款专为易语言开发者设计的工具,它能够帮助程序员将OCX控件转换为易语言(E语言)兼容的模块。易语言是一种中国本土开发的、以中文编程为主的编程语言,旨在降低编程难度,提高编程效率...
【cximage599c_ocx】是一款强大的图像处理控件,专为开发者设计,用于在应用程序中实现图像的编辑、处理和转换功能。这款控件具有广泛的应用场景,能够支持多种图形文件格式,包括但不限于JPEG、PNG、TIFF、BMP等。...
视频解码是播放控件的核心部分,它涉及到各种视频编码格式的识别和转换。常见的视频编码格式如H.264、MPEG-4等,都需要对应的解码器进行解析。控件内部可能集成了多种解码器,以便处理不同编码格式的视频,保证兼容...
Base64是一种字符编码方式,可以将二进制数据转换为ASCII字符串,方便在网络上传输或存储在文本格式的数据库中。这种方式特别适用于那些不支持二进制数据传输的应用场景,如HTTP协议。 压缩包中的文件包含以下几个...
在IT领域,音频格式转换是一项常见的任务,尤其是将流行的MP3格式转换为WAV格式。本文将详细解析标题和描述中提及的项目,一个用于将MP3文件转换为WAV文件的源程序,并讨论相关技术及其重要性。 首先,MP3是一种...
在"ocx将base64转图片的整体解决方案"中,我们关注的是如何利用OCX控件将Base64编码的字符串转换为实际的图片文件。这个解决方案可能包含以下几个部分: 1. **Base64解码**:首先,我们需要一个函数或方法来解码...
PDF文件格式转换是一个常见的需求,尤其在文档处理和信息共享中。PDF(Portable Document Format)是一种通用的文件格式,能够保留原始文档的布局和样式,但有时我们需要将PDF转换为其他格式,以便编辑、重新排版或...
主要为了说明下载原理”,这表明压缩包包含的资源可能是一个示例或教程,用于演示FTP(文件传输协议)和HTTP(超文本传输协议)这两种网络下载方式的工作原理,并且这个示例可以通过编译转换为OCX控件,以便集成到...
在使用液晶数字OCX的过程中,开发者可以通过编程接口(API)来控制这些控件的属性,例如颜色、字体样式、数字格式、动画效果等。这些API通常包括设置数字值的方法、改变显示样式的方法以及触发特定事件的函数。例如...
- 使用exe4j将JAR文件转换为EXE可执行文件。 - **配置exe4j**: - 输入应用名称和输出路径。 - 选择GUI模式,输入文件名。 - 设置最大最小JRE版本。 - 移除默认的JRE查找选项。 #### 结论 通过上述步骤,我们...
这个问题的焦点在于如何将C#中的数组转换为适合OCX控件接收的形式。 在OCX的接口定义中,数组通常通过`VARIANT*`类型进行传递。`VARIANT`是COM中的一种数据结构,可以容纳各种类型的值,包括数组。当C#项目引用OCX...
6. **IP地址和端口操作**:支持对IP地址和端口号的操作,如解析、转换和绑定等。 7. **UDP支持**:除了TCP,控件还支持无连接的用户数据报协议(UDP),适合于一次性的、不需要保证数据完整性的通信场景。 在安装...
这是Microsoft提供的一款命令行工具,用于将个人证书(PEM或PFX格式)转换为证书链的SPC(Software Publisher's Certificate)文件。SPC文件是Windows系统中用于代码签名的一种格式,它包含了所有必要的证书信息。 ...