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;
}

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

相关文章推荐

CStdioFile的Writestring写入中文的总结(unicode-ucs2/utf8-无Bom/ansi-gb2312)

(参考:http://blog.csdn.net/sun20082567/article/details/8316625 http://blog.csdn.net/gillerr/article/de...

VC6.0 UCS2(unicode) 与 GBK(gb2312) UTF(utf-8)格式互转

#include #include #include "windows.h" // 把UTF-8转换成Unicode void UTF_8ToUnicode(WCHAR* pOut,cha...

Windows下Unicode(UCS2),UTF8,GBK(GB2312)互转

Windows下提供了两个编码转换函数:WideCharToMultiByte和MultiByteToWideChar。 用它们可实现Unicode(UCS2),UTF8,GBK(GB2312)互转...

(个人理解+转载)ANSI/ASCII/UTF8/UNICODE/GB2312/UCS-2/UTF16-文本的编码格式

参考文档: http://baike.baidu.com/view/443268.htm?fromId=25492 http://www.ruanyifeng.com/blog/2007/10/asc...

从ASCII、ISO-8859、GB2312、GBK到Unicode的UCS-2、UCS-4、UTF-8、UTF-16、UTF-32

ASCII编码为了能在电报、打印机、计算机等电信设备上进行信息交换,就必须为不同的设备制定统一的编码格式。早期的电信设备字符编码基本都是使用6位编码。1963年美国国家标准协会(ANSI)制定并公布的...
  • Holmofy
  • Holmofy
  • 2017年06月02日 17:08
  • 768

ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS

一直对字符的各种编码方式懵懵懂懂,什么ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS……是不是看的很晕,假如您细细的阅读本文你一定可以清晰的理解他们。Let's go! ...

ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS

在学习java由于字符的编码的格式导致了编译的时候一直出错报警。所以转载下。了解下情况。       一直对字符的各种编码方式懵懵懂懂,什么ANSI、UNICODE、UTF-8、GB231...

对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16,GBK,GB2312的理解

——————————- Unicode: unicode.org制定的编码机制, 要将全世界常用文字都函括进去. 在1.0中是16位编码, 由U+0000到U+FFFF. 每个2b...

ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS。。。。。

一直对字符的各种编码方式懵懵懂懂,什么ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS……是不是看的很晕,假如您细细的阅读本文你一定可以清晰的理解他们。Let's go...

字符集编码cp936、ANSI、UNICODE、UTF-8、GB2312、GBK、GB18030、DBCS、UCS

字符集编码Unicode GB2312 UTF cp936   这是一篇程序员写给程序员的趣味读物。所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级。整理这篇...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gb2312-unicode(ucs2)
举报原因:
原因补充:

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