gb2312-unicode(ucs2)

原创 2015年11月19日 11:44:33
BOOL UCS2_TO_GB2312(std::string &dst, LPCWSTR src)
{
	const UINT CP_GB2312 = 936;
	BOOL IsOk;
	LONG nBytes;

	IsOk = FALSE;
	nBytes = WideCharToMultiByte(CP_GB2312, 0, src, -1, NULL, 0, NULL, NULL);
	if (nBytes > 0)
	{
		HANDLE hHeapHandle = GetProcessHeap();

		if (LPSTR mb = reinterpret_cast<LPSTR>(HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, nBytes)))
		{
			if (WideCharToMultiByte(CP_GB2312, 0, src, -1, mb, nBytes, NULL, NULL) == nBytes)
			{
				dst.append(mb);
				IsOk = TRUE;
			}
			HeapFree(hHeapHandle, 0, mb);
		}
	}
	return IsOk;
}

BOOL GB2312_TO_UCS2(std::wstring &dst, LPCSTR src)
{
	const UINT CP_GB2312 = 936;
	BOOL IsOk;
	LONG nCharacters;

	IsOk = FALSE;
	nCharacters = MultiByteToWideChar(CP_GB2312, 0, src, -1, NULL, 0);
	if (nCharacters > 0)
	{
		HANDLE hHeapHandle = GetProcessHeap();

		if (LPWSTR wc = reinterpret_cast<LPWSTR>(HeapAlloc(hHeapHandle, HEAP_ZERO_MEMORY, nCharacters * sizeof(wchar_t))))
		{
			if (MultiByteToWideChar(CP_GB2312, 0, src, -1, wc, nCharacters) == nCharacters)
			{
				dst.append(wc);
				IsOk = TRUE;
			}
			HeapFree(hHeapHandle, 0, wc);
		}
	}
	return IsOk;
}

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

gb2312-unicode(ucs2)

BOOL UCS2_TO_GB2312(std::string &dst, LPCWSTR src); BOOL GB2312_TO_UCS2(std::wstring &dst, LPCSTR sr...
  • Sidyhe
  • Sidyhe
  • 2015年11月19日 11:44
  • 460

C++中GB2312字符串和UTF-8之间的转换

在编程过程中需要对字符串进行不同的转换,特别是Gb2312和Utf-8直接的转换。在几个开源的魔兽私服中,很多都是老外开发的,而暴雪为了能 够兼容世界上的各个字符集也使用了UTF-8。在中国使用VS(...
  • zhuruibing
  • zhuruibing
  • 2016年11月30日 18:16
  • 1805

字符编码(ucs2 ucs4 utf)

源地址:http://blog.charlee.li/unicode-intro/ 最近一直在忙点私活,又好久没写blog了,再不写点的话二月份就又要以单篇文章结束了。 前一阵子一直在研究Unico...
  • qweewqpkn
  • qweewqpkn
  • 2015年12月06日 13:17
  • 529

短信发送接收时的UCS2编码转换处理

其实UCS2这种编码不像GB2312、UTF-8等,它并不属于任何语系的语言编码,实际上是一种编码格式的世界语。在这个世界上所有可以在计算机中使用的语言都有对应的UCS2编码。 正是因为Ja...
  • chen517611641
  • chen517611641
  • 2016年03月10日 20:57
  • 2722

mac下eclipse支持GBK GB2312等

因为两个项目用的编码不同,一个用的utf-8,一个是GBK,在mac下面,发现eclipse的选项里面,居然不能选择gbk编码,于是查了下,发现直接在那个下拉框里面填上GBK就行了 或者GB2312就...
  • zz_mm
  • zz_mm
  • 2015年07月29日 18:44
  • 1042

真正UTF-8与GB2312间的转换(兼容windows和Linux)

                                                       UTF-8与GB2312间的转换                             ...
  • alexaroma
  • alexaroma
  • 2008年05月10日 16:31
  • 1973

实现UTF-8、UCS2编码和解码

编码的原理知识可以看:https://www.zhihu.com/question/23374078 public void encodeDecode(){ String str...
  • michael_yt
  • michael_yt
  • 2017年04月20日 14:01
  • 1163

短信中的的 UCS2的编码与解码方法(java)

最近,做一个关于SMS的程序,需要对中文部分进行UCS编码,这里用了两个函数,可以将短信中的UCS2字符串在UCS2和GBK之间装换。记录以下代码: /** * UCS2解码 ...
  • chen517611641
  • chen517611641
  • 2016年03月10日 21:01
  • 2808

利用C语言实现UTF-8与UCS2之间的互相转化

本文简单介绍UCS,UNICODE和UTF-8,并利用C语言实现了UTF-8与UCS2之间的互相转化。   1.什么是UCS和ISO10646?    国际标准ISO10646定义了通用字符集(U...
  • jiht594
  • jiht594
  • 2011年12月07日 17:07
  • 1647

utf8与ucs2互转

int ucs2_to_utf8(char high_byte,char low_byte, char *utf8){ if(high_byte == 0x00 && low_byte
  • t163ang
  • t163ang
  • 2014年09月03日 22:00
  • 756
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gb2312-unicode(ucs2)
举报原因:
原因补充:

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