`
qiaoweishu
  • 浏览: 65420 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

GBK_TO_UTF8 程序实现方式

 
阅读更多
    网络上面有提到GBK向UTF8转换的实现方式,但是尝试之后不大准确。
    如下是自己根据GBK和UTF8的存储格式,实现GBK向UTF8转化。

    BYTE aGBK[3] = {0x00, 0x00, 0x00};
    int by1, by2, by3, iValue, iSub = 1, iLen = 0, iCount = 0;
    wchar_t aUnicode[2];
    BYTE *pString = NULL;
    iLen = sStr.Length();//sStr为函数输入参数,AnsiString
    pString = new BYTE [iLen * 3];
    while(iSub <= iLen)
    {
        if(0x80 > (iValue = (sStr[iSub] & 0xFF)))
        {
            pString[iCount++] = iValue;
        }
        else
        {
            aGBK[0] = (sStr[iSub++] & 0xFF);
            aGBK[1] = (sStr[iSub] & 0xFF);
            MultiByteToWideChar(CP_ACP, 0, aGBK, 3, aUnicode, 2);
            by1 = 0xE0;
            by2 = 0x80;
            by3 = 0x80;
            iValue = aUnicode[0];
            by3 |= (iValue & 0x0000003F);
            by2 |= ((iValue >> 6) & 0x0000003F);
            by1 |= ((iValue >> 12) & 0x0000000F);
            pString[iCount++] = by1;
            pString[iCount++] = by2;
            pString[iCount++] = by3;
        }
        iSub++;
    }


2010_10_18_16_59
分享到:
评论

相关推荐

    VC++中文繁体、简体(BIG-GBK)编码转换程序.rar

    VC++ 中进行简体中文(GB2312)向繁体(BIG5)转换的程序。

    java论坛一键搭建Easyjsprun! v6.0.0 UTF-8 For linux 110530.zip

    6.0.0 UTF-8 Release 20101028 二、安装步骤 ============ 1. 将EasyJspRun6.0下载并上传到Linux主机; 2. 以root身份登录主机,执行tar xzvf EasyJspRun6.0.tar.gz 解包; 3. 进入EasyJspRun6.0目录,并执行....

    代码对比器.rar

    该工具支持utf-8, gbk,gb2312等不同格式的文本,可以在线对比html, php, css, asp, js等代码,这对于程序员来说是非常方便! 比起同类软件Beyond compare、DiffMerge、WinMerge等可能功能不够强大,但这个在线工具...

    一键转帖功能插件 for 帝国CMS 6.0 GBK utf8 V1.0.rar

    帝国CMS 6.0一键转帖功能插件V1.0 使用方法: 1.上传 copyto.js copyto.php 到根目录 2.内容页适当位置加入HTML.TXT中的代码 3.重新生成内容页

    Encoding

    默认输入编码方式为GBK,默认输出编码方式为UTF-16BE; 该类别提供两个函数用来修改输入和输出编码方式: 修改输入编码方式 boolean SetGetEncoding(string $GetEncoding) 修改输出编码方式 boolean ...

    DISCUZ2.5 升级到Discuz!4.0.0的升级程序

    并将config.inc.php中的$tablepre做相应修改 &lt;br&gt; D4正式版中config.inc.php新增加了一个变量$charset,请根据你所使用的语言来设置,目前只有三种可设置gbk、big5和utf-8  如果你是简体则设置为gbk、繁体则...

    go-huge-util:去常见和巨大的实用功能

    概要 Go 通用和庞大的实用功能可帮助您快速轻松地创建您的 Go 程序。...gbkStrRes, _ := huge.Utf8ToGbk(utf8Str) fmt.Println(gbkStrRes) // [196 227 186 195] 网 一些有用的功能可用于处理网络。 例如,您

    DreamArticle文章管理程序v3.0Build20090415UTF-8+GBK版

    &lt;p&gt;&lt;fontface&gt; DreamArticleVersion3.0 (文章管理程序)    版本:DreamArticleVersion3.0 &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;fontface&gt; 版权所有:iDreamSoft.CN 枯木QQ:471334865&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;fontface&gt; ...

    PHP中mb_convert_encoding与iconv函数的深入解析

    比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。mb_convert_encoding的用法见官方:...

    PB实现微信、支付宝、新大陆星POS支付-9.0.rar

    PB新大陆星POS扫码支付源码,调用C#动态库,简单实现接口,采用POWERBUILDER9.0开发 string ls_url string ls_data string ls_dd string ls_zfqd //【交易类型--传入平台用】 if rb_1.checked = true then ls_zfqd ...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    这个程序里我们实现了两类窗口打开的方式,一个是自身消失而 后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们实现的 方法是不同的。 三、Qt Creator 登录对话框(原创) 实现功能: 在弹出对话框...

    PHP下编码转换函数mb_convert_encoding与iconv的使用说明

    比如你用Zend Studio或Editplus写程序时,用的是gbk编码,如果数据需要入数据库,而数据库的编码为utf8时,这时就要把数据进行编码转换,不然进到数据库就会变成乱码。 mb_convert_encoding的用法见官方: ...

    QT多线程技术读取文档内容到程序里

    QTextCodec *codec = QTextCodec::codecForName("UTF-8"); #endif QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); #else QTextCodec *...

    实用上传类,上传效果演示

    //数据库字符集 可选 'gbk', 'big5', 'utf-8' define('ADLEYLIU_ROOT',dirname(__FILE__)); 程序绝对目录 define('ADLEYLIU_UPLOADPATH', 'upload_files'); //上传文件目录 $_SGLOBAL['yl_dbname'] 数据库连接 $to...

    非常实用的上传类,上传效果在线演示:(三种上传效果jqupload,swfupload,)

    //数据库字符集 可选 'gbk', 'big5', 'utf-8' define('ADLEYLIU_ROOT',dirname(__FILE__)); 程序绝对目录 define('ADLEYLIU_UPLOADPATH', 'upload_files'); //上传文件目录 $_SGLOBAL['yl_dbname'] 数据库连接 $to...

    java论坛一键搭建Easyjsprun! v6.0.0 GBK For linux 110530.zip

    6.0.0 UTF-8 Release 20101028 二、安装步骤 ============ 1. 将EasyJspRun6.0下载并上传到Linux主机; 2. 以root身份登录主机,执行tar xzvf EasyJspRun6.0.tar.gz 解包; 3. 进入EasyJspRun6.0目录,并执行....

    oracle详解

    1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。例如:假设我们做exp时导出的为test的对象,现在我们想把对象导入用户: imp userid=test1/test1 file=expdat.dmp fromuser=test1 to...

    python3大文件解压和基本操作

    先说下:所谓的大文件并不是压缩文件有多大,几十兆的文件而是解压后几百兆。其中就遇到解压不成功的情况.、读小文件时成功,大文件... # data = data.decode('gbk').encode('utf-8') data = data.decode('gbk', 'igno

    复杂邮件程序完整Java源码,支持添加附件,图片,HTML格式文本,支持远程WebService调用

    * HexiangMailServiceImpl 邮件接收发送接口实现类 * * @author 380595305@qq.com * Date 2010-05-11 * @version 1.0 */ public class HexiangMailServiceImpl implements HexiangMailService { /** ...

Global site tag (gtag.js) - Google Analytics