将ISO-2022-CN字符集转换成GBK的源代码
来源:互联网 发布:mac同时打开两个窗口 编辑:程序博客网 时间:2024/05/01 16:40
将ISO-2022-CN字符集转换成GBK的源代码
吴旻
泰岩网络工作室
同事用的是Apple操作系统,发出来的邮件在我的系统中经常会有乱码。仔细看了下邮件内容,发现是邮件中使用的字符集是ISO-2022-CN。上网查了下,发现这东西在国内使用的很少,尤其是在Windows平台上,根本没提供现成的解码函数。想找个开源的相关代码,翻了半天,未果。
今天有空,终于抽出时间写出了这个解码函数,供大家参考。
//ISO-2022-CN - 中文// ESC $ ) A 转为GB 2312-1980// ESC $ ) G 转为CNS 11643-1992第一字面// ESC $ * H 转为CNS 11643-1992第二字面//ISO-2022-CN-EXT - 于ISO-2022-CN的基础上,加上以下六组逃逸字串// ESC $ ) E 转为ISO-IR-165// ESC $ + I 转为CNS 11643-1992第三字面// ESC $ + J 转为CNS 11643-1992第四字面// ESC $ + K 转为CNS 11643-1992第五字面// ESC $ + L 转为CNS 11643-1992第六字面// ESC $ + M 转为CNS 11643-1992第七字面CString CTaiyanWebString::Iso2022cn2Gbk(const char *pSrc){ CStringA strDest; char *pDest = strDest.GetBufferSetLength(strlen(pSrc)); bool bIsConvert = false; while(*pSrc) { switch(*pSrc) { case 0x1b: // <ESC> 字符集信息 pSrc += 4; // 字符集信息此处未做处理,建议以后补上 break; case 0x0e: // <SO> 转换开始 ++pSrc; bIsConvert = true; break; case 0x0f: // <SI> 转换结束 ++pSrc; bIsConvert = false; break; default: *pDest++ = bIsConvert ? (*pSrc++ | 0x80) : (*pSrc++); break; } } *pDest = 0; strDest.ReleaseBuffer(); return CString(strDest);}
就不解释了。
- 将ISO-2022-CN字符集转换成GBK的源代码
- MYSQL数据库字符集转换由iso-8859-1转gbk
- mysql表的字符集uft8转换成gbk测试
- mysql表的字符集gbk转换成utf8测试
- 字符集GBK到UTF8的转换
- php判断字符串的编码以及将字符串从GBK转换为UTF8字符集
- GBK字符集和UTF8字符集的转换C++
- 将GBK转换成UTF8
- 工具方法,将字符创由一种编码转换成另一种编码,UTF-8,GBK,ISO,BIG5。。。。。。
- 将GBK的简体转换到GBK繁体(转)
- 字符串转换不同的字符集utf-8---》gbk
- 如何将utf8转换成gbk
- PHP通过iconv将字符串从GBK转换为UTF8字符集
- 函数:PHP将字符串从GBK转换为UTF8字符集iconv
- PHP通过iconv将字符串从GBK转换为UTF8字符集
- 函数:PHP将字符串从GBK转换为UTF8字符集iconv
- 把当前目录和子目录下的java文件,从GBK转换成UTF-8字符集的shell脚本
- GBK字符集碰到的问题
- (10)动态选路协议
- Python 模块导入路径问题
- MyEclipse保存不编译问题
- samba 共享目录无法访问 解决方法总结
- Android数据存储(3)SQLite简介和简单的登录与注册源代码
- 将ISO-2022-CN字符集转换成GBK的源代码
- CUDA: DLL封装调用
- ASP.NET返回上一页的方法小集
- JDK安装及环境变量配置
- sql
- myeclipse 10.0 安装svn插件的多种方式
- typedef const
- hql 的OrderBy查询Asc将null字段放在最后,Desc将null字段放在最前
- HTML防止选择和右键