⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uncodegb.cpp

📁 实现GB2312到UCS2/unicode的相互转换
💻 CPP
字号:
// UncodeGB.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "unicodeGBTrans.h"
#include <Windows.h>
#include <iostream>
using namespace std;

int gsmEncodeUcs22(const char* pSrc, unsigned char* pDst, int nSrcLength);
int gsmDecodeUcs22(const unsigned char* pSrc, char* pDst, int nSrcLength);

int _tmain(int argc, _TCHAR* argv[])
{
	
	
	char gb[]="我们是124df";
	char toGB1[256];
    char toGB2[256];
	//WCHAR unChar[]={_T"124df我们是"};
	unsigned char ucsChar1[256];
    unsigned char ucsChar2[256];
	cout<<"GB2312:"<<gb<<endl;
	
	int ucsLen=gsmEncodeUcs22(gb,ucsChar1,strlen(gb));
	cout<<ucsChar1<<endl;
	int ucslen2=gsmEncodeUcs2(gb,ucsChar2,strlen(gb));
	cout<<ucsChar2<<endl;
    gsmDecodeUcs22(ucsChar1,toGB1,ucsLen);
	gsmDecodeUcs2(ucsChar2,toGB2,ucslen2);

	cout<<toGB1<<endl;
	cout<<toGB2<<endl;



	
	
	return 0;
}


int gsmDecodeUcs22(const unsigned char* pSrc, char* pDst, int nSrcLength)
{
	int nDstLength;		// UNICODE宽字符数目
	WCHAR wchar[128];	// UNICODE串缓冲区

	
		for(int i=0; i<nSrcLength/2; i++)
		{
			wchar[i] = *pSrc++ << 8;	// 先高位字节
			wchar[i] |= *pSrc++;		// 后低位字节
		}

		// UNICODE串-->字符串
		nDstLength = WideCharToMultiByte(CP_ACP, 0, wchar, nSrcLength/2, pDst, 160, NULL, NULL);

		// 输出字符串加个结束符
		pDst[nDstLength] = '\0';

		// 返回目标字符串长度
		return nDstLength;
}

int gsmEncodeUcs22(const char* pSrc, unsigned char* pDst, int nSrcLength)
{
	int nDstLength;		// UNICODE宽字符数目
	WCHAR wchar[128];	// UNICODE串缓冲区

	// 字符串-->UNICODE串
	nDstLength = MultiByteToWideChar(CP_ACP, 0, pSrc, nSrcLength, wchar, 128);

	//如果是英文字母如何处理
	for(int i=0; i<nDstLength; i++)
	{
		*pDst++ = wchar[i] >> 8;		// 先输出高位字节
		*pDst++ = wchar[i] & 0xff;		// 后输出低位字节
	}
	//	TRACE("%s",wchar);
	// 返回目标编码串长度
	return nDstLength * 2;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -