static int fetchWordFromUTF8(const chConstStringA& strText, WCHAR& result)
{
int nLength = strText.length();
if(nLength <= ) return ; LPCSTR lpszTextA = strText.c_ptr();
BYTE byte = *lpszTextA;
if ((byte >> ) == 0x00)
{
result = (WCHAR)(BYTE)*lpszTextA;
return ;
}
else if ((byte >> ) == 0x06)
{
if(nLength >= )
{
DWORD dw0 = (DWORD)(BYTE)lpszTextA[];
DWORD dw1 = (DWORD)(BYTE)lpszTextA[];
result = (WCHAR)((dw1&0x3F) | ((dw0&0x1F) << ));
return ;
}
}
else if ((byte >> ) == 0x0E)
{
if(nLength >= )
{
DWORD dw0 = (DWORD)(BYTE)lpszTextA[];
DWORD dw1 = (DWORD)(BYTE)lpszTextA[];
DWORD dw2 = (DWORD)(BYTE)lpszTextA[];
result = (WCHAR)((dw2&0x3F) | ((dw1&0x3F) << ) | ((dw0&0x0F)<<));
return ;
}
}
result = '?';
return ;
} static int fetchUTF8FromWord(const UINT& word, LPSTR szResult)
{
if (word < 0x0080)
{
szResult[] = (ACHAR)word;
return ;
}
else if (word < 0x0800)
{
szResult[] = (ACHAR)(0xC0 | (BYTE)(word>>));
szResult[] = (ACHAR)(0x80 | (BYTE)(word&0x003F));
return ;
}
else// if (word <= 0xFFFF)
{
szResult[] = (ACHAR)(0xE0 | (BYTE)(word>>));
szResult[] = (ACHAR)(0x80 | (BYTE)((word>>) & 0x3F));
szResult[] = (ACHAR)(0x80 | (BYTE)(word&0x3F));
return ;
}
szResult[] = '?';
return ;
}

UTF-8 <==> unicode(WCHAR)的更多相关文章

  1. Unicode 与 Unicode Transformation Format(UTF,UTF-8 / UTF-16 / UTF-32)

    ASCII(American Standard Code for Information Interchange):早期它使用7 bits来表示一个字符,总共表示27 = 128个字符:后来扩展到8 ...

  2. Unicode和UTF的关系

    目录结构: contents structure [+] 什么是USC UCS的编码方式 Unicode的来源 为什么需要Unicode Unicode的方式 Unicode和UTF UTF和Unic ...

  3. ASCII UNICODE UTF "口水文"

    最近接了一个单是需要把非 UTF-8 (No BOM)编码的文件转换成 UTF-8 (No BOM),若此文件是 UTF-8 但带有 BOM ,需要转换成不带 BOM 的.于是开启了一天的阅读.首先花 ...

  4. 转:Unicode字符集和多字节字符集关系

    原文地址: http://my.oschina.net/alphajay/blog/5691 unicode.ucs-2.ucs-4.utf-16.utf-32.utf-8 http://stallm ...

  5. Unicode字符集和多字节字符集关系

      在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset). 在最初的时候,Internet上只有一种字符集—— ...

  6. Unicode和多字节字符集

    今天自己写的发现一个输出路径程序使用unicode字符集只能输出单个的首字符,问了一下同事,改为使用多字节字符集,问题解决了 于是上网看了他们的区别:  很多没看完,但起码了解到字符集的演变过程, 转 ...

  7. 【转】【编码】ASCII 、UNICODE和UTF-8之二

    字符发展 1. 美国 ASCII-(American standard code information interchange) 美国信息互换标准代码 范围:1-127 ; 单字 备注:前部用作控制 ...

  8. 转: 带你玩转Visual Studio——带你理解多字节编码与Unicode码

    上一篇文章带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑帮我们理解了Windows中的各种类型C/C++运行时库及它的来龙去脉,这是C++开发中特别容易误入歧途的 ...

  9. Unicode、UTF-8、UTF-16和UTF-32的区别

    Unicode是一个巨大的字符集,给世界上所有的字符定义了一个唯一编码.其仅仅规定了每个符号的二进制代码,没有制定细化的存储规则.UTF-8.UTF-16.UTF-32才是Unicode的存储格式定义 ...

随机推荐

  1. PHP DES 加解密

    代码很简单,如下: <?php $key = 'very important data'; function jiami($key, $str) { /* Open module, and cr ...

  2. SpringMVC学习系列(6) 之 数据验证

    在系列(4).(5)中我们展示了如何绑定数据,绑定完数据之后如何确保我们得到的数据的正确性?这就是我们本篇要说的内容 —> 数据验证. 这里我们采用Hibernate-validator来进行验 ...

  3. CrashHandler: java.lang.NullPointerException

    08-29 20:33:47.305 20636-20636/com.tongyan.subway.inspect D/AndroidRuntime: Shutting down VM 08-29 2 ...

  4. 【转】贾扬清:希望Caffe成为深度学习领域的Hadoop

    [转:http://www.csdn.net/article/2015-07-07/2825150] 在深度学习(Deep Learning)的热潮下,Caffe作为一个高效.实用的深度学习框架受到了 ...

  5. xml中数据存储 <![CDATA[ … ]]>

    在xml中  有些可能是 转义的字符  比如像<等  &符号,  你没发现 在加参数后面要进行转义 写成&#26: 可以是&  但是每处都要 这么写.  在未来不可控的 ...

  6. nodejs初探(二)第一个nodejs程序“hello world”

    直接用文本编辑器编写helloworld.js,保存在桌面 var http = require("http"); http.createServer(function(reque ...

  7. 再看静态static及相关知识汇集

    在C#程序中,没有全局变量的概念,这意味着所有的成员变量只有该类的实例才能操作这些数据,这起到了“信息隐藏”的作用.但有些时候,这样做却不是个明智的选择.C#中静态变量——它在类中类似全局变量,保存类 ...

  8. 新的android studio创建的fragment工程跟老师讲的结构有区别

    工程自动创建了fragment类,并且activity_main中的标签是fragmnet,这就不需要在MainAcitivity中手动创建fragment了. 但是这样的程序运行之后会出现两个fra ...

  9. Java集合---LinkedList源码解析

    一.源码解析1. LinkedList类定义2.LinkedList数据结构原理3.私有属性4.构造方法5.元素添加add()及原理6.删除数据remove()7.数据获取get()8.数据复制clo ...

  10. 50. Remove Duplicates from Sorted Array && Remove Duplicates from Sorted Array II && Remove Element

    Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such that e ...