【第22期】观点:IT 行业加班,到底有没有价值?

C++ Unicode与UTF_8 编码转换

原创 2016年05月31日 13:17:06
void UTF_8ToUnicode(wchar_t* pOut,char *pText){
    char* uchar = (char *)pOut;
    uchar[1] = ((pText[0] & 0x0F) << 4) + ((pText[1] >> 2) & 0x0F);
    uchar[0] = ((pText[1] & 0x03) << 6) + (pText[2] & 0x3F);
}

void UnicodeToUTF_8(char* pOut,wchar_t* pText){
    // 注意 WCHAR高低字的顺序,低字节在前,高字节在后
    char* pchar = (char *)pText;
    pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4));
    pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) + ((pchar[0] & 0xC0) >> 6);
    pOut[2] = (0x80 | (pchar[0] & 0x3F));
}

出处:

http://www.360doc.com/content/13/0114/20/7023119_260175036.shtml

以上代码只能转换第一个宽字符,要转换全部可以加一个循环,如下:

string UnicodeToUTF_8(wchar_t* pText)
{
    // 注意 WCHAR高低字的顺序,低字节在前,高字节在后
    string str;
    char* pOut = new char[4];
    memset(pOut, 0, 4);
    for (int i = 0; i < wcslen(pText); i ++) {
        char* pchar = (char *)&pText[i];

        pOut[0] = (0xE0 | ((pchar[1] & 0xF0) >> 4));
        pOut[1] = (0x80 | ((pchar[1] & 0x0F) << 2)) +((pchar[0] & 0xC0) >> 6);
        pOut[2] = (0x80 | (pchar[0] & 0x3F));

        str += pOut;
    }
    return str;
}

还可以使用 iconv库。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Discuz 高效wap编码转换类,很强的,gbk-utf8 or unicode

/*    [Discuz!] (C)2001-2006 Comsenz Inc.    This is NOT a freeware, use is subject to license terms...

C++:UTF-8、UTF-16、UTF-32之间的编码转换

<span style

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

C++:UTF-8、UTF-16、UTF-32之间的编码转换

开发语言:C++功能描述:Unicode内码转换器。用于UTF-8、UTF-16(UCS2)、UTF-32(UCS4)之间的编码转换。下载地址:UnicodeConverter.zip版本历史:V1....
  • jhqin
  • jhqin
  • 2010-06-22 21:24
  • 14762

C++ UTF8编码转换 CChineseCode

一 预备知识 1,字符:字符是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。“中”“国”这是两个汉字字符。字符仅仅代表一个符号,没有任何实际值的意义。 2,字符集:字符集是字符的集合。例...

PHP中Unicode编码转换为UTF-8字符

/** * utf8字符转换成Unicode字符 * @param [type] $utf8_str Utf-8字符 * @return [type] Unicode字符 ...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)