zoukankan      html  css  js  c++  java
  • 记录下 UTF6 GBK 转换函数

    int GBK2UTF8(char *szGbk,char *szUtf8,int Len)  
    {  
    	// 先将多字节GBK(CP_ACP或ANSI)转换成宽字符UTF-16  
    	// 得到转换后,所需要的内存字符数  
    	int n = MultiByteToWideChar(CP_ACP,0,szGbk,-1,NULL,0);  
    	// 字符数乘以 sizeof(WCHAR) 得到字节数  
    	WCHAR *str1 = new WCHAR[sizeof(WCHAR) * n];  
    	// 转换  
    	MultiByteToWideChar(CP_ACP,  // MultiByte的代码页Code Page  
    		0,            //附加标志,与音标有关  
    		szGbk,        // 输入的GBK字符串  
    		-1,           // 输入字符串长度,-1表示由函数内部计算  
    		str1,         // 输出  
    		n             // 输出所需分配的内存  
    		);  
    
    	// 再将宽字符(UTF-16)转换多字节(UTF-8)  
    	n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);  
    	if (n > Len)  
    	{  
    		delete[]str1;  
    		return -1;  
    	}  
    	WideCharToMultiByte(CP_UTF8, 0, str1, -1, szUtf8, n, NULL, NULL);  
    	delete[]str1;  
    	str1 = NULL;  
    
    	return 0;  
    }  
    
    
    //UTF-8 GBK  
    int UTF82GBK(char *szUtf8,char *szGbk,int Len)  
    {  
    	int n = MultiByteToWideChar(CP_UTF8, 0, szUtf8, -1, NULL, 0);  
    	WCHAR * wszGBK = new WCHAR[sizeof(WCHAR) * n];  
    	memset(wszGBK, 0, sizeof(WCHAR) * n);  
    	MultiByteToWideChar(CP_UTF8, 0,szUtf8,-1, wszGBK, n);  
    
    	n = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);  
    	if (n > Len)  
    	{  
    		delete[]wszGBK;  
    		return -1;  
    	}  
    
    	WideCharToMultiByte(CP_ACP,0, wszGBK, -1, szGbk, n, NULL, NULL);  
    
    	delete[]wszGBK;  
    	wszGBK = NULL;  
    
    	return 0;  
    }  
    
  • 相关阅读:
    [CentOS5]安装VirtualBox
    [Java]一则自定义的XStream转换器,主要用于POJO XML反序列化为Map/List
    [CentOS5]开启vsftpd中本地用户的上传权限
    [CSS]强制TD不换行
    [CentOS5]快速关闭SeLinux
    [vba]获取PPT幻灯片中的所有标题
    [VBA]批量转换xls为csv
    [OTHER]玩具的报复 绿化版 注册表
    [CentOS]在vsftpd中为本地用户指定默认目录
    递归读取输出无限分类目录
  • 原文地址:https://www.cnblogs.com/itdef/p/3826999.html
Copyright © 2011-2022 走看看